5

可能重复:
添加三个变量的 foreach

如果我有 3 个相同大小的数组,是否可以使用 costruct foreach() 同时循环 3 个数组?

前任。

$name contains names

$surname contains surnames

$address contains addresses.

foreach 可以同时取元素 [1], [2], [.....] 进行打印

$name[1], $surname[1], $address[1];

$name[2], $surname[2], $address[2];

等等?

4

5 回答 5

21

SPL 的multipleIterator正是为此目的而设计的

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($array1));
$mi->attachIterator(new ArrayIterator($array2));
$mi->attachIterator(new ArrayIterator($array3));

foreach ( $mi as $value ) {
    list($name, $surname, $address) = $value;
    echo $name , ' => ' , $surname , ' => ' , $address , PHP_EOL;
}
于 2012-12-28T14:34:35.577 回答
7

假设它们的长度都相同:

for ($i = 0; $i < count($names); $i++) {
    echo "{$names[$i]}, {$surnames[$i]}, {$addresses[$i]}";
}
于 2012-12-28T14:34:43.190 回答
4

您可以这样做(如果数组具有相同的键):

foreach ($name as $key => $value) {
    //use $name[$key], $surname[$key], $address[$key]
}

$key包含$name数组中的键

$value=$name[$key]

于 2012-12-28T14:34:57.450 回答
1

尝试这个

foreach($arr1 as $i => $val) {
    var_dump($val, $arr2[$i], $arr3[$i]);
}
于 2012-12-28T14:35:33.470 回答
0

如果数组键相同,则可以使用key()函数。

但是您可以将密钥传递给foreach($array as $key => value()){} 这种方式,您可以在不使用函数的情况下通过变量引用密钥。

于 2012-12-28T14:35:56.937 回答