php 同时循环两个数组,如何一次循环两个数组?

问题

那么问题当然是你的嵌套foreach循环。因为对于$data1数组的每个元素,你遍历整个$data2数组(所以总共有$data1* $data2迭代)。

解决方案

要解决这个问题,您必须立即遍历两个数组。

array_map()方法(PHP> = 5.3)

您可以使用array_map()并将所有数组传递给它,同时将它循环到它。array_map(function($v1, $v2){

echo $v1 . "
";

echo $v2 . "
";}, $data1, $data2 /* , Add more arrays if needed manually */);

注意:如果元素数量不均匀,您将不会产生任何错误,它只会打印NULL(意味着您将看不到任何内容)$it = new MultipleIterator();$it->attachIterator(new ArrayIterator($data1));$it->attachIterator(new ArrayIterator($data2));//Add more arrays if needed foreach($it as $a) {

echo $a[0] . "
";

echo $a[1] . "
";}

注意:如果元素数量不均匀,它将只打印两个数组仍具有值的所有值

for loop方法(PHP> = 4.3)

使用带有计数器变量的for循环,您可以将其用作两个数组的键。$keysOne = array_keys($data1);$keysTwo = array_keys($data2);$min = min(count($data1), count($data2));for($i = 0; $i 

echo $data1[$keysOne[$i]] . "
";

echo $data2[$keysTwo[$i]] . "
";}

注意:使用array_keys()就是如此,如果阵列不具有相同的键或具有关联性,这也适用。min()用于仅循环遍历每个数组所具有的元素

或者,如果数组只有唯一值,则可以array_combine()同时使用这两个数组,以便$data1可以作为键和$data2值进行访问。foreach(array_combine($data1, $data2) as $d1 => $d2) {

echo $d1 . "
";

echo $d2 . "
";}

注意:数组必须具有相同数量的元素,否则array_combine()将引发错误

如果要同时打印2个以上的数组或只打印未知数量的数组,可以将该array_map()方法与call_user_func_array()调用结合使用。$func = function(...$numbers){

foreach($numbers as $v)

echo $v . "
";

echo "
";};call_user_func_array("array_map", [$func, $data1, $data2]);

注意:由于这种array_map()方法使用的方法,它的行为与元素数量不均匀的行为相同。此外,由于这种方法只适用于PHP> = 5.6你可以删除参数,改变了$numbers用func_get_args()在foreach循环,然后它也适用于PHP> = 5.3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值