2010-07-26 3 views
4

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

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

$fnames массива имеет $lnames массив, который соответствует этому, и я хотел бы напечатать LName с имя_файлом в то же самое время, что-то вроде этого: но он не компилируется

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; 
    } 
} 

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

ответ

9
foreach($fnames as $key => $fname){ 
    echo $fname.' '.$lnames[$key]; 
} 
+3

Должно быть, учитывая, что ключи в массивах совпадают. –

5

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

foreach(array_map(null,$fnames,$lnames) as $name){ 
    echo $name[0].' '.$name[1]; 
} 
+0

Аккуратный трюк, мне нужно будет запомнить эту технику –

2

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

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

Хотя это немного надуманный пример, он по-прежнему полезен для понимания.

Смежные вопросы