最近我接受了一个很多问题的采访,但有一个我无法回答的问题是:
仅使用一个foreach
循环打印多维数组。
$cars = array (
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
采访者让我只使用一个foreach
循环打印上面的数组。有人可以给我答案吗?
答案 0 :(得分:2)
您可以使用递归函数。只有一个foreach
循环以递归方式调用。
$cars = array(array("Volvo",22,18),array("BMW",15,13),array("Saab",5,2),array("Land Rover",17,15));
function displayArr($arr) {
foreach($arr as $key => $value) {
if(is_array($value)) {
displayArr($value);
echo "<br>";
}
else {
echo $value . " . ";
}
}
}
displayArr($cars);
答案 1 :(得分:1)
你去吧
$cars = array ( array("Volvo",22,18), array("BMW",15,13),array("Saab",5,2), array("Land Rover",17,15) );
foreach($cars as $car) {
print("Name: ".$car[0]."\n");
print("Number 1: ".$car[1]."\n");
print("Number 2: ".$car[2]."\n");
}
显然可以检查是否设置了内部数组中的其他键。但似乎你的数组将始终包含所有键。
编辑:
根据您留下的评论,您希望尽可能保持动态,以便您需要使用递归或goto控制结构。
$cars = array ( array("Volvo",22,18), array("BMW",15,13),array("Saab",5,2), array("Land Rover",17,15) );
foreach($cars as $car) {
$count = 0;
A:
if(isset($car[$count])) {
print($car[$count] . "\n");
$count +=1;
goto A;
}
}
答案 2 :(得分:0)
$cars = array (
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
foreach($cars as $car){
echo "<pre>";
print_r($car);
echo "</pre>";
}
答案 3 :(得分:0)
这可以给你结果。
<?php
$cars = array ( array("Volvo",22,18), array("BMW",15,13),array("Saab",5,2), array("Land Rover",17,15) );
array_map('fun', $cars);
function fun($cars){
foreach($cars as $car){
echo $car."<br />";
}
}
?>
输出
Volvo 22 18 BMW 15 13 Saab 5 2 Land Rover 17 15
使用array_map遍历子数组。
答案 4 :(得分:0)
这是一种甚至不使用foreach
循环
function walk2($item, $key)
{
echo $key . ' - ' . $item.PHP_EOL;
}
function walk1($car, $key)
{
array_walk($car, 'walk2');
echo '------'.PHP_EOL;
}
array_walk($cars, 'walk1');
给出输出:
0 - Volvo
1 - 22
2 - 18
------
0 - BMW
1 - 15
2 - 13
------
0 - Saab
1 - 5
2 - 2
------
0 - Land Rover
1 - 17
2 - 15
------
虽然可能这个问题应该让你提出有关数组构成的逻辑问题,这样他们就可以测试你的分析技能,就像你跳过编码箍一样。
此外,即使您没有使用foreach或任何其他循环,您也正在使用为这些函数编写的“C”代码,当然这些代码正在使用某种循环。
答案 5 :(得分:0)
foreach($cars as $key=>$car){
echo $car[0];
echo $car[1];
echo $car[2];
}