【问题标题】:PHP nested array into HTML listPHP嵌套数组到HTML列表中
【发布时间】:2015-03-03 10:21:38
【问题描述】:

试图掌握 PHP,但我完全不知道该怎么做。

我要取这个数组:

$things = array('vehicle' => array('car' => array('hatchback', 'saloon'),'van','lorry'),
                'person' => array('male', 'female'),
                'matter' => array('solid', 'liquid', 'gas'),
            );

然后在 HTML 中把它变成这样的东西:

  • 车辆
    • 汽车
      • 掀背车
      • 沙龙
    • 货车
    • 女性
  • 物质
    • 固体
    • 液体
    • 煤气

通过搜索尝试了多种解决方案,但根本无法解决任何问题。

【问题讨论】:

标签: php arrays recursion html-lists


【解决方案1】:

尝试类似:

<?php
function ToUl($input){
   echo "<ul>";

   $oldvalue = null;
   foreach($input as $value){
     if($oldvalue != null && !is_array($value))
        echo "</li>";
     if(is_array($value)){
        ToUl($value);
     }else
        echo "<li>" + $value;
      $oldvalue = $value;
    }

    if($oldvalue != null)
      echo "</li>";

   echo "</ul>";
}
?>

代码来源:Multidimensional array to HTML unordered list

【讨论】:

    【解决方案2】:

    您正在寻找的东西称为递归。下面是一个递归函数,如果数组键的值也是一个数组,则调用自身。

    function printArrayList($array)
    {
        echo "<ul>";
    
        foreach($array as $k => $v) {
            if (is_array($v)) {
                echo "<li>" . $k . "</li>";
                printArrayList($v);
                continue;
            }
    
            echo "<li>" . $v . "</li>";
        }
    
        echo "</ul>";
    }
    

    【讨论】:

    • 我会尽力去实现它。感谢您的帮助,非常感谢。
    • 更新:这很快就奏效了,非常感谢!
    • 这也适用于同时包含数组和静态值的数组。即array("foo"=&gt;array("a","b"),"bar","baz");
    • 太好了!再次感谢。我无法投票,因为我的声誉仍然很低,但我接受了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2021-09-15
    相关资源
    最近更新 更多