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