在多维数组中发出所有的回声


Echoing out everything in Multi-dimensional Array

好的,所以我试图得到多维数组的窍门,我知道他们是什么,他们做什么。

在下面的例子中,我创建了(可能不是最有效的方式)一个Cars array

在这个数组中,我有另外两个包含数组的变量,一个用于模型,另一个用于颜色。

我想要的结果是呼应出每辆车的所有型号和颜色。

例如

宝马红色轿车,宝马红色掀背车,宝马红色旅行车,宝马绿色轿车,宝马绿色掀背车等等等等

到目前为止,在下面的代码中,我可以得到汽车的制造,但然后它返回数组数组。

<?php 
$colours = array("red","green","blue");
$models = array("hatchback","saloon","estate");
$cars= array(
        array("Bmw",$colours,$models),
        array("Volvo",$colours,$models),
        array("VW",$colours,$models),
        array("Mercedes",$colours,$models)
    );
foreach ($cars as $innerArray){
    foreach ($innerArray as $value) {
        echo $value . '<br/>';
    }
}
?>

我知道foreach语句是错误的,但这就是我卡住的地方。如果你能帮助我,甚至更好地解释它背后的逻辑,那就太棒了!

使用以下任何可用的函数来转储您的顶级数组变量:

  1. print_r
  2. var_dump
  3. var_export

在你的数组'cars'中有字符串和数组,所以当你回显$值时,你试图回显数组的2/3次。

如果你只是想重复这些内容,我建议你使用

print_r ()

其他答案应该可以很好地为您工作,只是为了完成,这里是array_walk_recursive代码:

function walkFunction($value,$key) {
  echo "$key: $value<br/>";
}
array_walk_recursive($cars,"walkFunction");

我不会尝试组合你的数组,这就是循环的作用。保持简单——颜色数组有颜色,模型有模型,汽车有汽车。这样循环中的变量名就更有意义,也更容易循环。然后你所要做的就是遍历每一个。

$colours = array("red","green","blue");
$models = array("hatchback","saloon","estate");
$cars = array("Bmw","Volvo","VW","Mercedes");
foreach($cars as $car)
{
    foreach($colours as $colour)
    {
        foreach($models as $model)
        {
           echo $car.' '.$colour.' '.$model.'<br>';
        }
    }
}

您的$value有时是字符串,有时是数组。Echo对数组不起作用。尝试用var_dump代替echo。

 foreach ($cars as $innerArray){
foreach ($innerArray as $value)
    {var_dump($value);
 }
    }

试试这个:

$r = count($cars);
for ($row = 0; $row < $r; $row++)
{
    echo "<ul>";
    for ($col = 0; $col < 3; $col++)
    {
        echo "<li>".$cars[$row][$col]."</li>";
    }
    echo "</ul>";
}