【问题标题】:Echoing out everything in Multi-dimensional Array回显多维数组中的所有内容
【发布时间】:2013-05-16 14:57:20
【问题描述】:

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

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

【问题讨论】:

  • 如果$value是一个数组,则需要递归调用。
  • 您想以特定模式打印输出或只是随机输出...???
  • 特定模式。我希望 foreach 循环回显每辆汽车的所有变化。我不想简单地打印出数组。

标签: php multidimensional-array foreach


【解决方案1】:

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

  1. print_r
  2. var_dump
  3. var_export

【讨论】:

    【解决方案2】:

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

    如果你只是想回应这些东西,我建议你使用

    print_r()

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        $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>';
                }
            }
        }
        

        【讨论】:

        • 虽然它没有解释多维数组问题,但这个解决方案是有意义且有效的。有时最好不要使事情过于复杂。谢谢迈克尔。
        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          试试这个:

          $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>";
          }
          

          【讨论】:

            猜你喜欢
            • 2017-07-19
            • 2015-11-20
            • 2017-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-08-12
            相关资源
            最近更新 更多