Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,”;Foreach“;使用3个数组_Php_Arrays_Foreach - Fatal编程技术网

PHP,”;Foreach“;使用3个数组

PHP,”;Foreach“;使用3个数组,php,arrays,foreach,Php,Arrays,Foreach,可能重复: 如果有3个大小相同的数组,是否可以使用costruct foreach()在同一时间循环3个数组 前 foreach可以同时获取元素[1]、[2]、…]进行打印 $name[1], $surname[1], $address[1]; $name[2], $surname[2], $address[2]; 等等?SPL的设计正是为了这个目的 $mi = new MultipleIterator(); $mi->attachIterator(new ArrayIterator

可能重复:

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

foreach可以同时获取元素[1]、[2]、…]进行打印

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

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

SPL的设计正是为了这个目的

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

假设它们都是相同的长度:

for ($i = 0; $i < count($names); $i++) {
    echo "{$names[$i]}, {$surnames[$i]}, {$addresses[$i]}";
}
for($i=0;$i
您可以这样做(如果数组具有相同的键):

$key
包含
$name
数组中的键

$value
=
$name[$key]

试试这个

foreach($arr1 as $i => $val) {
    var_dump($val, $arr2[$i], $arr3[$i]);
}

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

但是您可以将密钥传递给
foreach($key=>value()){}

通过这种方式,您可以通过变量引用密钥,而无需使用函数。

我更喜欢使用foreach来提高安全性。。。使用foreach如何提供更高的安全性?……根据php.net,foreach应该与数组一起使用……Yikes。好啊祝你好运。是的,但是使用for循环和访问数组函数的索引都一样,而且更快。请明智地为童话代码(或示例代码)选择变量名,
$1
不是有效的变量名:)什么是$value?我试图阅读php.net文档,但我无法理解这一部分。请再看一遍答案。哦,谢谢,第一次没有:PNice。这会自动处理数组不包含相同数量元素的情况吗?我对同样的问题感兴趣。顺便说一句,谢谢,这似乎是我一直在寻找的。可能不是,因为列表结构。如果其中一个数组有两个索引,我相信它会失败。您可以更改
乘法器
构造函数并传入
乘法器::MIT_NEED_ANY
,这将导致循环对数组中最长的每个元素执行。默认值为
MultipleIterator::MIT\u NEED\u ALL
,仅当每个数组在当前插槽中都有一个元素时才会运行。请查看数组构造函数的可选标志-=它显示了如何通过数字或关联索引匹配数组
foreach ($name as $key => $value) {
    //use $name[$key], $surname[$key], $address[$key]
}
foreach($arr1 as $i => $val) {
    var_dump($val, $arr2[$i], $arr3[$i]);
}