好的,所以我试图得到多维数组的窍门,我知道他们是什么,他们做什么。
在下面的例子中,我创建了(可能不是最有效的方式)一个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语句是错误的,但这就是我卡住的地方。如果你能帮助我,甚至更好地解释它背后的逻辑,那就太棒了!
使用以下任何可用的函数来转储您的顶级数组变量:
- print_r
- var_dump
- 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>";
}