Несколько foreach без вложенности - PullRequest
4 голосов
/ 27 июля 2010

Этот первый блок кода работает как положено.Это foreach для печати значений из $fnames массива ключевых значений.

foreach($fnames as $fname){
   echo $fname;
}

Массив $fnames имеет массив $lnames, который ему соответствует, и я бынравится печатать lname одновременно с именем fname, что-то вроде этого: но он не компилируется

foreach($fnames as $fname && $lnames as $lname){
   echo $fname . " " . $lname;
}

Я тоже пробовал это, но это тоже не компилируется.

foreach($fnames,$lnames as $fname,$lname){
   echo $fname . " " . $lname;
}

Единственное, что скомпилировалось, было это, но это не дало правильных результатов.

foreach($fnames as $fname){
   foreach($lnames as $lnames){
       echo $fname . " " . $lname;
   }
}

Как я могу получить такой вид спаривания между двумя массивами с одним и тем же индексом?

Ответы [ 3 ]

9 голосов
/ 27 июля 2010
foreach($fnames as $key => $fname){ 
   echo $fname.' '.$lnames[$key]; 
}
5 голосов
/ 27 июля 2010

Другой вариант будет:

foreach(array_map(null,$fnames,$lnames) as $name){
    echo $name[0].' '.$name[1];
}
2 голосов
/ 27 июля 2010

Если вы не хотите объединять массивы, вам нужно запустить два генератора одновременно. К счастью, у PHP есть способ сделать это с массивами. Хотя это немного старая школа.

reset($fnames);
reset($lnames);
do {
    print current($fnames).' '.current($lnames)."\n";
} while( next($fnames) && next($lnames) );

Хотя это немного надуманный пример, это все же полезная техника, которую нужно знать.

...