1

好的,所以我正在尝试了解多维数组,我知道它们是什么以及它们做什么。

在下面的示例中,我创建了(可能不是最有效的方式) a 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 语句是错误的,但这就是我卡住的地方。如果你能帮助我或者更好地解释它背后的逻辑,那就太棒了!

4

6 回答 6

3

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

  1. 打印_r
  2. var_dump
  3. var_export
于 2013-05-16T15:01:16.743 回答
2

在您的数组“汽车”中有字符串和数组,因此当您回显 $value 时,您尝试回显 2/3 次的数组。

如果您只想回显这些东西,我建议您使用

打印_r()

于 2013-05-16T15:00:32.633 回答
1

其他 asnwers 应该对你有用,只是为了完整,这里是array_walk_recursive代码:

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

array_walk_recursive($cars,"walkFunction");
于 2013-05-16T15:07:21.810 回答
0

你的 $value 有时是一个字符串,有时是一个数组。Echo 不适用于数组。尝试 var_dump 而不是 echo。

 foreach ($cars as $innerArray){
foreach ($innerArray as $value)
    {var_dump($value);
 }
    }
于 2013-05-16T15:02:27.210 回答
0

尝试这个 :

$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>";
}
于 2013-05-16T15:08:37.647 回答
0

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

$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>';
        }
    }
}
于 2013-05-16T16:11:26.277 回答