亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建二維數組到多級訂單列表?

如何創建二維數組到多級訂單列表?

PHP
一只甜甜圈 2021-12-24 09:26:36
我有一個 php 數組在下面,$two_dimention = array(array("id"=>4, "name" => "Home", "parent" => 0, "depth" => 0),array("id"=>5, "name" => "Menu 1", "parent" => 0, "depth" => 0),array("id"=>6, "name" => "Menu 2", "parent" => 0, "depth" => 0),array("id"=>8, "name" => "Menu 2.1", "parent" => 6, "depth" => 1),array("id"=>10, "name" => "Menu 2.1.1", "parent" => 8,  "depth" => 2),array("id"=>11, "name" => "Menu 2.1.2", "parent" => 8, "depth" => 2),array("id"=>9, "name" => "Menu 2.2", "parent" => 6, "depth" => 1),array("id"=>7, "name" => "Menu 3", "parent" => 0, "depth" => 0),array("id"=>18, "name" => "Menu 3.1", "parent" => 7, "depth" => 1),);根據這個 $two_dimention 數組,它將創建 HTML 中的多維訂單列表,如下所示, <ul>    <li>Home</li>    <li>Menu 1</li>    <li>Menu 2        <ul>            <li>Menu 2.1                <ul>                    <li>Menu 2.1.1</li>                    <li>Menu 2.1.2</li>                </ul>            </li>            <li>Menu 2.2</li>        </ul>    </li>    <li>Menu 3        <ul>            <li>Menu 3.1</li>        </ul>    </li></ul>我怎樣才能通過 PHP for/foreach 循環來做到這一點?
查看完整描述

1 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

這是答案,使用ref從多維數組創建嵌套數組


function makeRecursive($d, $r = 0, $pk = 'parent', $k = 'id', $c = 'children')

{

    $m = [];

    foreach ($d as $e) {

        isset($m[$e[$pk]]) ?: $m[$e[$pk]] = [];

        isset($m[$e[$k]]) ?: $m[$e[$k]]   = [];

        $m[$e[$pk]][]                     = array_merge($e, [$c => &$m[$e[$k]]]);

    }

    return $m[$r]; // remove [0] if there could be more than one root nodes

}

function nested2ul($data)

{

    $result = [];

    if (sizeof($data) > 0) {

        $result[] = '<ul>';

        foreach ($data as $entry) {

            $result[] = sprintf(

                '<li>%s %s</li>',

                $entry['name'],

                nested2ul($entry['children'])

            );

        }

        $result[] = '</ul>';

    }

    return implode($result);

}

$temp= makeRecursive($two_dimention);

echo nested2ul($temp);


輸出


<ul>

  <li>Home </li>

  <li>Menu 1 </li>

  <li>Menu 2

    <ul>

      <li>Menu 2.1

        <ul>

          <li>Menu 2.1.1 </li>

          <li>Menu 2.1.2 </li>

        </ul>

      </li>

      <li>Menu 2.2 </li>

    </ul>

  </li>

  <li>Menu 3

    <ul>

      <li>Menu 3.1 </li>

    </ul>

  </li>

</ul>


查看完整回答
反對 回復 2021-12-24
  • 1 回答
  • 0 關注
  • 146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號