回应多维数组中的所有内容

时间:2013-05-16 14:57:20

标签: php multidimensional-array foreach

好的,所以我试图掌握多维数组,我知道它们是什么以及它们做了​​什么。

在下面的示例中,我创建了{可能不是最有效的方式)Cars array

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

我正在寻找的结果是回应每辆车的所有车型和颜色。

例如

  

Bmw Red Saloon,宝马红色两厢车,宝马红色庄园,宝马绿色沙龙,   宝马绿色两厢车等等。

到目前为止,在下面的代码中,我可以得到汽车的品牌,但之后它与数组阵列相呼应。

<?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声明是错误的,但这就是我被困住的地方。如果你可以帮助我,或者甚至更好地解释它背后的逻辑,那就太棒了!

6 个答案:

答案 0 :(得分:3)

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

  1. print_r
  2. var_dump
  3. var_export

答案 1 :(得分:2)

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

如果您只想回应这些内容,我建议您使用

  

的print_r()

答案 2 :(得分:1)

其他答案应该对您有用,只是为了完整,这是array_walk_recursive代码:

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

array_walk_recursive($cars,"walkFunction");

答案 3 :(得分:0)

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

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

答案 4 :(得分: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>";
}

答案 5 :(得分: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>';
        }
    }
}