使用键和值将多维数组显示为无序列表

时间:2017-05-26 06:56:56

标签: php multidimensional-array foreach html-lists

所以我有这样的数组。

[
    '0020098238 - Address 1' => [
        '20011045 - 1',
        '20011880 - 2',
        '20014727 - 3',
        '20015506 - 4'
    ],
    '0020011189 - Address 2' => [
        '20012490 - 11',
        '20018679 - 22',
        '20023569 - 33',
        '20028843 - 44'
    ],
    '0020102015 - Address 3' => [
        '20008315 - 55',
        '20008689 - 66',
        '20021267 - 77',
        '20032518 - 88'
    ]
]

现在,我想制作foreach或implode或其他东西,结果得到这样的列表

  • 0020098238 - 地址1
    • 20011045 - 1
    • 20011880 - 2
    • 20014727 - 3
    • 20015506 - 4
  • 0020011189 - 地址2
    • 20012490 - 11
    • 20018679 - 22
    • 20023569 - 33
    • 20028843 - 44
  • 0020102015 - 地址3
    • 20008315 - 55
    • 20008689 - 66
    • 20021267 - 77
    • 20032518 - 88

我尝试使用foreach($ array作为$ key => $ val)而不是implode $ val但它不起作用。我可以收集密钥,但缺少数组中的值。

THX

这是我尝试过的(嵌套的foreach)

foreach ($user_sap_data as $customer => $destinations) {
    echo '<ul>';
        echo '<li>' . $customer . '</li>';
        foreach ($destinations as $destination) {
            echo '<li>' . $destination . '</li>';
        }
    echo '</ul>';
}

但结果我得到的只是第一个foreach的关键(在嵌套的foreach中)

这与问题PHP nested array into HTML list不同,因为在其他问题中有关键=&gt; (key =&gt; val,key =&gt; val ...)但在此示例中为key =&gt; (val,val,val)等它的类似但不重复

4 个答案:

答案 0 :(得分:0)

自从您使用implode后,您可以这样使用:

echo "<ul>";
foreach ($arr as $key => $value) {
    echo "<li>$key";
    echo "<ul><li>" . implode("</li><li>", $value) . "</li></ul></li>";
}
echo "</ul>";

有两个foreach嵌套:

echo "<ul>";
foreach ($arr as $key => $value) {
    echo "<li>$key";
    echo "<ul>";
    foreach ($value as $subvalue) {
        echo "<li>$subvalue</li>";
    }
    echo "</ul></li>";
}
echo "</ul>";

答案 1 :(得分:0)

echo "<ul>";
foreach($arr as $key=>$values){
    echo "<li>$key</li>"; //print array key
    echo "<ul>";
    foreach($values as $val){ 
         echo "<li>$val</li>"; // print subarray values
    }
    echo "</ul>";
}
echo "</ul>";

您的代码 - 已更新:

    echo '<ul>';
    foreach ($user_sap_data as $customer => $destinations) {
          echo '<li>' . $customer . '</li>';
          echo '<ul>';
          foreach ($destinations as $destination) {
            echo '<li>' . $destination . '</li>';
          }
          echo '</ul>';
        }
        echo '</ul>';

答案 2 :(得分:0)

你可以用另外两个foreach循环实现这个目的。 第一个循环将遍历父级元素,第二个循环将遍历其中的子级。

<?php
$array = array(
  '0020098238 - Address 1' => array(
    '20011045 - 1',
    '20011880 - 2',
    '20014727 - 3',
    '20015506 - 4'
  ),
  '0020011189 - Address 2' => array(
    '20012490 - 11',
    '20018679 - 22',
    '20023569 - 33',
    '20028843 - 44'
  ),
  '0020102015 - Address 3' => array(
    '20008315 - 55',
    '20008689 - 66',
    '20021267 - 77',
    '20032518 - 88'
  )
);
?>
<ul>
  <?php
  foreach ($array as $key => $val) {
    ?>
    <li>
      <?php echo $key; ?>
      <ul>
        <?php
        foreach ($val as $key_ch => $val_ch) {
          ?>
          <li>
            <?php echo $val_ch; ?>
          </li>  
          <?php
        }
        ?>
      </ul>
    </li>
    <?php
  }
  ?>
</ul>

答案 3 :(得分:0)

尝试使用此解决方案。在第二次预告中,你必须得到关键的价值......

Intent i = new Intent(this, AndroidDatabaseManager.class);
startActivity(i);

我认为内爆不起作用,但我没有尝试:)