PHP中使用foreach语句输出多维数组

4
我们能否使用单个foreach语句来输出多个数组?
尝试以下方式,但未成功:

可能会重复:
PHP foreach循环中的多个索引变量

foreach($cars, $ages as $value1, $value2)
{
    echo $value1.$value2;
}

能够这样做会很好,但我认为您需要使用索引。这些数组长度总是相同的吗? - Yzmir Ramirez
@Yzmir 数组长度不同。 - user1043972
6
如果它们长度不同,这样做其实没有什么意义。 - Mike Lentini
1
在这里尝试对两个数组进行foreach时,必须非常小心。例如,当您尝试按汽车品牌对$ cars数组进行排序时会发生什么?在这种情况下,$ ages数组变得无用。我认为最好的方法是使用一个填充了某种CarAge对象的单个数组,并对该数组进行foreach。 - Roy
1个回答

11

假设两个数组具有相同的元素数量,这应该可以工作

foreach(array_combine($cars, $ages) as $car => $age){
    echo $car.$age;
}
如果不能保证数组长度相同,那么可以像这样操作。
$len = max(count($ages), count($cars));
for($i=0; $i<$len; $i++){
    $car = isset($cars[$i]) ? $cars[$i] : '';
    $age = isset($ages[$i]) ? $ages[$i] : '';
    echo $car.$age;
}

如果你只想要将这两个数组合并在一起,你可以像这样做

foreach(array_merge($cars, $ages) as $key => $value){
    echo $key . $value;
}

1
哇,你打败了我。而且你的代码和我的完全一样 :D -- +1 - fardjad
2
使用array_combine()是行不通的,因为根据提问者的说法,这些数组的大小不同。当数组大小不同时,array_combine()会返回FALSE。也许你可以填充较小的数组? - Yzmir Ramirez
我喜欢你对处理不同长度数组的编辑,比我的回答更好。+1 - Yzmir Ramirez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接