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 docker实践项目
  • ¥15 数电几道习题,写出作答过程,ai一律不采用
  • ¥15 利用pthon计算薄膜结构的光导纳
  • ¥15 海康hlss视频流怎么播放
  • ¥15 Paddleocr:out of memory error on GPU
  • ¥30 51单片机C语言数码管驱动单片机为AT89C52
  • ¥100 只改动本课件的 cal_portfolio_weight_series(decision_date), 跑完本课件。设计一个信息比率尽量高的策略。
  • ¥20 如何在visual studio 2022中添加ImageMagick库
  • ¥50 如何实现uniapp编译的微信小程序做可回溯视频
  • ¥15 stm32用5个IO口接16个矩阵按键怎么设计PCB原理图啊