2011-07-14 5 views
6

Usando PHP foreach, ¿cómo obtendría solo los primeros 9 resultados en un foreach y solo el segundo 9 en otro foreach?PHP foreach array obtiene los primeros 9 resultados y luego el segundo 9

Algo así como

foreach {$ tiendas [1 - 9] como tienda de $) {

foreach {$shops[10 - 18] as 
$shop) { 

¿Alguna idea?

maravilloso

+0

'array_slice' es lo que desea. – thetaiko

+0

@Robin Knight puede hacer un pequeño esfuerzo para hacer una pregunta similar hace unos minutos – chafank

+0

http://php.net/manual/en/function.array-slice.php puede obtener más opción – jeni

Respuesta

9

Uso array_slice():

foreach(array_slice($shops,0,9) as $shop){ 
    // etc. 
} 

foreach(array_slice($shops,9,9) as $shop){ 
    // etc. 
} 
+0

Gracias, perfecto –

+0

Pregunta adicional: ¿cómo podría hacer esto en una matriz de longitud desconocida? 1, 25, 122, no solo 18? – bafromca

+0

Puede verificar fácilmente count() para obtener el tamaño de la matriz. Pero, si está tratando de dividirlo en partes de igual tamaño y módulo chunksize! = 0, tendrá que tener lógica para manejar ese último fragmento de un tamaño diferente. Sin embargo, nada en la llamada array_slice como está escrito se rompería. En el caso de mi ejemplo anterior, devolvería hasta 9 elementos por cada fragmento. –

3

utilizar un bucle for en su lugar?

for (int $i = 0; $i < 9; $i++) 
{ 
    $shop = $shops[$i]; 
} 

Posteriormente, se podría hacer otra con $i = 10..19. Si debe usar foreach, tenga un contador que incremente y break; o use array_slice como otros hayan sugerido.

+0

esto podría funcionar si no hay nada que ver con el valor en las matrices – Wilf

0

usando array_slice puede dividir en dos la matriz entonces usted puede hacer esto

$my_array = array('1','2',...,'18'); 

$first_array = array_slice($my_array,0,9); 
$second_array = array_slice($my_array,9,18); 
0

utilizar un bucle for lugar.

for ($i = 0; $i < 9; $i++) 
{ 
    $shop = $shops[$i]; 
} 

for ($i = 9; $i < 18; $i++) 
{ 
    $shop = $shops[$i]; 
} 
1

¿Qué tal

foreach (array_slice($shops, 0, 9) as $shop) { 
    ... 
} 

y

foreach (array_slice($shops, 9, 9) as $shop) { 
    ... 
} 

??

1
foreach (array_chunk($shops, 9) as $section) { 
    // Do some logic on each section 
    foreach ($section as $shop) { 
     // Do some logic on each shop 
    } 
} 
+0

Esta respuesta es mucho más sofisticada que otras. –