dongteng0748 2016-03-31 13:16
浏览 21
已采纳

如何将多维数组转换为ul列表?

This is my array:

array(1) {
  ["farm"]=>
  array(1) {
    ["animals"]=>
    array(1) {
      [horses]=>
      array(4) {
        ["fred.jpg"]=>
        string(63) "farm/animals/horses/fred.jpg"
        ["sam.jpg"]=>
        string(74) "farm/animals/horses/sam.jpg"
        ["alan.jpg"]=>
        string(64) "farm/animals/horses/alan.jpg"
        ["john.jpg"]=>
        string(63) "farm/animals/horses/john.jpg"
      }
    }
  }
}

I want to convert it to a ul list, so the result should be:

<ul>
    <li>farm
        <ul>
            <li>animals
                <ul>
                    <li>horses
                        <ul>
                            <li>fred.jpg</li>
                            <li>sam.jpg</li>
                            <li>alan.jpg</li>
                            <li>john.jpg</li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

I used this function:

function array2ul($array) {
  $output = '<ul>';
  foreach ($array as $key => $value) {
    $function = is_array($value) ? __FUNCTION__ : 'htmlspecialchars';
    $output .= '<li>' . $key . '</li>';
  }
  return $output . '</ul>';
}

But the result is:

<ul>
        <li>farm
            <ul>
                <li>animals
                    <ul>
                        <li>horses
                            <ul>
                                <li>fred.jpg</li>
                                <li>farm/animals/horses/sam.jpg</li>
                                <li>farm/animals/horses/alan.jpg</li>
                                <li>farm/animals/horses/john.jpg</li>
                            </ul>   
                        </li>
                    </ul>
                 </li>
            </ul>
        </li>
    </ul>
  • 写回答

1条回答 默认 最新

  • dsgni26260 2016-03-31 13:24
    关注

    You must do it with a recursive function:

    function recursiveArrayToList(Array $array = array())
    {
        echo '<ul>';
        foreach ($array as $key => $value) {
            echo '<li>' . $key . '</li>';
    
            if (is_array($value)) {
                 recursiveArrayToList($value);
            }
        }
        echo '</ul>';
    }
    
    recursiveArrayToList($initialArray);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘