多个foreach没有嵌套

时间:2010-07-26 22:41:25

标签: php arrays foreach associative-array

第一个代码块按预期工作。从foreach键值数组中打印值是$fnames

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

$fnames数组有一个与它对应的$lnames数组,我想同时用fname打印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;
   }
}

如何在同一索引的2个数组之间进行这种配对?

3 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:5)

另一种选择是:

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

答案 2 :(得分:2)

如果您不想组合数组,实际上需要同时运行两个生成器。 Fortuantely,PHP有一种方法可以用数组做到这一点。不过,这有点老了。

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

虽然这是一个有点人为的例子,但它仍然是一种有用的技术。