PHP嵌套数组到HTML列表中

时间:2015-01-05 20:04:42

标签: php arrays html-lists

试图掌握PHP,但我完全不知道如何做到这一点。

我想拿这个数组:

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

并将其转换为HTML中的类似内容:

  • 车辆
    • 汽车
      • 两厢
      • 轿车
    • Lorry
    • 固体
    • 液体
    • 气体

从搜索中尝试了许多解决方案,但根本无法完成任何工作。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

尝试类似:

<?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