Цикл Foreach на большем многомерном массиве - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь найти правильный способ использования циклов foreach вокруг этого многомерного массива, потому что то, что я делаю, не работает, чтобы дать мне четыре раздела.

Это один основной массив, который разбиваетв другой массив "областей".Есть четыре области, каждая из которых имеет свой собственный набор дисплеев, и каждый дисплей имеет страницу и дату истечения срока действия.

Я просто пытаюсь зациклить каждый уровень, чтобы я мог отображать разные биты данных по всей странице по мере необходимости

$pages = array(
  "Areas" => array(
    "Area One"=>array(
      "Displays"=>array(
        "Lobby"=>array(
          "Page"=>"News",
          "Expiration"=>"06/12/2018"
        ),
        "Office"=>array(
          "Page"=>"Social",
          "Expiration"=>"06/30/2018"
        ),
      ),
    ),
    "Area Two"=>array(
      "Displays"=>array(
        "Lobby"=>array(
          "Page"=>"News",
          "Expiration"=>"06/12/2018"
        ),
        "Office"=>array(
          "Page"=>"Social",
          "Expiration"=>"06/30/2018"
        ),
      ),
    ),
    "Area Three"=>array(
      "Displays"=>array(
        "Lobby"=>array(
          "Page"=>"News",
          "Expiration"=>"06/12/2018"
        ),
        "Office"=>array(
          "Page"=>"Social",
          "Expiration"=>"06/30/2018"
        ),
      ),
    ),
    "Area Fou"=>array(
      "Displays"=>array(
        "Lobby"=>array(
          "Page"=>"News",
          "Expiration"=>"06/12/2018"
        ),
        "Office"=>array(
          "Page"=>"Social",
          "Expiration"=>"06/30/2018"
        ),
      ),
    ),
  ),
);


<?php foreach($pages as $areas=>area):?>
<h3><?php echo $area?> This would list Area One, Area Two, etc.</h3>
<h5><?php echo $Displays?>This would list Lobby, Office</h5>
<?php end foreach?>

Так что я должен получить 4 блока текстового спискакаждая область и ее соответствующие дисплеи, если это имеет смысл.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Я думаю, вы ищете Displays в качестве ключа для каждой области.Вы можете использовать array_keys и использовать implode , чтобы отобразить их как строку, или использовать другой foreach , чтобы отобразить их для каждого элемента массива.

ВозможноВы можете обновить свой код как

<?php foreach($pages["Areas"] as $areas => $area):?>
<h5><?php echo $areas?></h5>
<h3><?php echo implode(',', array_keys($area["Displays"]))?></h3>

<?php endforeach;?>

Демо

0 голосов
/ 11 июня 2018

Вам нужно пропустить два foreach здесь:

foreach($pages["Areas"] as $area_name => $area_details)
{
    echo "<h3>" . $area_name . "</h3>";
    foreach($area_details["Displays"] as $d=>$v)
    {
        echo "<h5>" . $d . "</h5>";
        echo "<p>Page: " . $v["Page"] . "</p>";
        echo "<p>Expiration: " . $v["Expiration"] . "</p>";
    }
}
...