【问题标题】:In PHP how do you access data from multidimensional arrays with multiple keys在 PHP 中,如何从具有多个键的多维数组中访问数据
【发布时间】:2020-03-07 15:31:11
【问题描述】:

这是数组:

$weatherData = [
    "Chicago" => [45, "fog",   ["Mon" => [44, "fog"], "Tue" => [42, "sleet"], "Wed" => [40, "rain"], "Thu" => [44, "cloudy"], "Fri" => [45, "cloudy"]]],
    "Paris" =>   [73, "sunny", ["Mon" => [75, "sunny"], "Tue" => [75, "sunny"], "Wed" => [68, "cloudy"], "Thu" => [66, "cloudy"], "Fri" => [60, "rain"]]],
    "Calgary" => [-8, "snow",  ["Mon" => [-7, "snow"], "Tue" => [-10, "snow"], "Wed" => [-3, "sleet"], "Thu" => [0, "cloudy"], "Fri" => [3, "sunny"]]]
];

我已经有了输出每个城市的一般信息的功能(例如:对于芝加哥,我输出了“45”和“雾”):

function outputBox($weatherData)
{
    foreach ($weatherData as $key => $value) {
        echo "<article class='box'";
        echo "<h1>$key</h1>";
        echo "<div class='weather'>";
        echo "<img src='images/$key.jpg' />";
        echo "<div>";
        echo "<h2>$value[0]</h2>";
        echo "<p>$value[1]</p>";
        echo "</div>";
        echo "</div>";
    }

    outputForecast($weatherData);
}

现在我需要输出其他信息,例如芝加哥“周一 44 雾”、“周二 42 雨夹雪”…… 到目前为止,我得到了这个:

function outputForecast($weatherData){

    foreach ($weatherData[1] as $key => $value){
        echo "<section>";
        echo "<div>";
        echo "<h3>$key</h3>";
    }
}

我不知道为我的循环访问这些数字的正确代码是什么,但它应该输出周一至周五的详细信息,请帮忙谢谢!

【问题讨论】:

    标签: php function multidimensional-array foreach associative-array


    【解决方案1】:

    Hy scoobidydoo,您已经接近解决方案,但您需要阅读有关 PHP 数组的信息。玩代码非常有趣。只需更改这两个功能,

    解决方法如下: https://paiza.io/projects/Led6GCYVW6HV1dIZH6MdVQ?language=php

    function outputBox($weatherData)
    {
        foreach ($weatherData as $key => $value) {
            echo "<article class='box'>";
            echo "<h1>$key</h1>";
            echo "<div class='weather'>";
                echo "<img src='images/$key.jpg' />";
                echo "<div>";
                echo "<h2>$value[0]</h2>";
                echo "<p>$value[1]</p>";
            echo "</div>";
            echo "</article>";
    
            outputForecast($value[2]);
            echo '<hr/>';
        }
    }
    
    function outputForecast($valueDays){
        echo "<h2>Forecast</h2>";
        foreach ($valueDays as $key => $value){
            echo "<section>";
                echo "<div>";
                    echo "<h3>$key</h3>";
                    echo "<p>$value[0] - $value[1]</p>";
                echo "</div>";
            echo "</section>";
        }
    }
    

    【讨论】:

      【解决方案2】:

      你也可以这样,

      function outputBox($weatherData)
      {
          foreach ($weatherData as $key => $value) {
              echo $key.", ".$value[0].", ".$value[1].", ".'</br>';
              if(!empty($value[2])){
                 foreach ($value[2] as $k1 => $v1) {
                     echo '"'.$k1." ".$v1[0]." ".$v1[1].'"';
                 }
              }
              echo '</br>';
          }
      }
      
      print_r(outputBox($weatherData));
      

      输出:

      Chicago, 45, fog, 
      "Mon 44 fog""Tue 42 sleet""Wed 40 rain""Thu 44 cloudy""Fri 45 cloudy"
      Paris, 73, sunny, 
      "Mon 75 sunny""Tue 75 sunny""Wed 68 cloudy""Thu 66 cloudy""Fri 60 rain"
      Calgary, -8, snow, 
      "Mon -7 snow""Tue -10 snow""Wed -3 sleet""Thu 0 cloudy""Fri 3 sunny"
      

      【讨论】:

        【解决方案3】:
        $weatherData = [
            "Chicago" => [45, "fog", ["Mon" => [44, "fog"], "Tue" => [42, "sleet"], "Wed" => [40, "rain"], "Thu" => [44, "cloudy"], "Fri" => [45, "cloudy"]]],
            "Paris" => [73, "sunny", ["Mon" => [75, "sunny"], "Tue" => [75, "sunny"], "Wed" => [68, "cloudy"], "Thu" => [66, "cloudy"], "Fri" => [60, "rain"]]],
            "Calgary" => [-8, "snow", ["Mon" => [-7, "snow"], "Tue" => [-10, "snow"], "Wed" => [-3, "sleet"], "Thu" => [0, "cloudy"], "Fri" => [3, "sunny"]]]
        ];
        
        printData($weatherData);
        
        function printData($weatherData)
        {
            foreach ($weatherData as $key => $data) {
                echo '****<b>' . $key . ': ' . $data[0];
                echo ' ' . $data[1] . '</b>****<br>';
                echo json_encode($data[2]) . '<br><br>';
            }
        }
        

        输出

        ****Chicago: 45 fog****
        {"Mon":[44,"fog"],"Tue":[42,"sleet"],"Wed":[40,"rain"],"Thu":[44,"cloudy"],"Fri":[45,"cloudy"]}
        ****Paris: 73 sunny****
        {"Mon":[75,"sunny"],"Tue":[75,"sunny"],"Wed":[68,"cloudy"],"Thu":[66,"cloudy"],"Fri":[60,"rain"]}
        ****Calgary: -8 snow****
        {"Mon":[-7,"snow"],"Tue":[-10,"snow"],"Wed":[-3,"sleet"],"Thu":[0,"cloudy"],"Fri":[3,"sunny"]}
        

        【讨论】:

          猜你喜欢
          • 2023-03-24
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 2017-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多