2013-03-18 13 views
6

In che modo è possibile scorrere due array contemporaneamente con dimensioni uguali?In che modo è possibile scorrere due array contemporaneamente senza reiterare il ciclo principale?

per esempio, primo array $a = array(1,2,3,4,5); secondo array $b = array(1,2,3,4,5);

Il risultato che desidero attraverso scorrendo sia presenta il processo di loop passare attraverso gli stessi valori per produrre un risultato come

1-1 
    2-2 
    3-3 
    4-4 
    5-5 

Ho provato a farlo in questo modo, ma non ha funzionato, continua a ripetere il primo ciclo

foreach($a as $content) { 
    foreach($b as $contentb){ 
     echo $a."-".$b."<br />"; 
    } 
} 
+1

sono questi array indicizzati allo stesso modo? Quindi basta scorrere l'indice ... 'per ($ ii = ...)' – Floris

+0

possibile duplicato: [php looping attraverso più array] (http://stackoverflow.com/q/9171488/367456) – hakre

risposta

10

Utilizzare un normale for cappio al posto di un foreach, in modo da ottenere un contatore ciclo esplicito:

for($i=0; $i<count($content)-1; $i++) { 
    echo $content[$i].'-'.$contentb[$i]; 
} 

Se si desidera utilizzare in base array indicizzati stringa, e sapere che gli indici di stringa sono uguali tra gli array, è può rimanere con il foreach costrutto

foreach($content as $key=>$item) { 
    echo $item.'-'.$contentb[$key]; 
} 
+0

non funziona se inizia a utilizzare array con indici basati su stringhe! – ITroubs

+0

altrimenti è quello che avrei usato anch'esso – ITroubs

+0

@ITroubs ha aggiunto il caso per gli indici basati su stringhe, anche se i dati di esempio nella domanda non ne specificano alcuna necessità. – hexblot

13

Non il più efficiente, ma una dimostrazione di SPL multipleIterator

$mi = new MultipleIterator(); 
$mi->attachIterator(new ArrayIterator($a)); 
$mi->attachIterator(new ArrayIterator($b)); 

$newArray = array(); 
foreach ($mi as $value) { 
    list($value1, $value2) = $value; 
    echo $value1 , '-' , $value2 , PHP_EOL; 
} 
3

Se sono le stesse dimensioni, solo fare questo:

foreach($a as $key => $content){ 
    $contentb = $b[$key]; 
    echo($content."-".$contentb."<br />"); 
} 
Problemi correlati