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

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

PHP分層數組 - 父母和孩子

PHP分層數組 - 父母和孩子

PHP
慕斯王 2022-06-11 18:07:25
我正在創建一個父子層次結構數組。請在數組下方找到并幫助我修復。它parent_id在按順序時工作正常,但我想保持我的數組值相同。function Testing(){    $tasks[] = array("id" => 1, "parent_id" => 0);    $tasks[] = array("id" => 2, "parent_id" => 5);    $tasks[] = array("id" => 3, "parent_id" => 2);    $tasks[] = array("id" => 5, "parent_id" => 3);    $tasks[] = array("id" => 4, "parent_id" => 3);    $tasks[] = array("id" => 6, "parent_id" => 5);    $tasks[] = array("id" => 7, "parent_id" => 6);    $tree = buildTree($tasks);    print("<pre>");print_r($tree);}function buildTree(array $elements, $parentId = 0) {    $branch = array();    foreach ($elements as $element) {        if ($element['parent_id'] == $parentId) {            $children = buildTree($elements, $element['id']);            if ($children) {                $element['children'] = $children;            }            $branch[] = $element;        }    }    return $branch;}
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

為了避免無限循環的錯誤,當某些元素的子元素具有 parent_id 時,您可以使用第三個參數來列出所有已管理的 id。如果一個 id 在你的治療中回來,你可以拋出一個異常:


function buildTree(array $elements, $parentId = 0, $managedParent = []) {

    $branch = array();


    // Add new id in list of managed ids

    $managedParent[] =$parentId;


    foreach ($elements as $element) {


        if ($element['parent_id'] == $parentId) {


          // check id not already managed

          if(in_array($element['id'], $managedParent))

          {

            // in this case children are already a parent of same structure. Throw an Excpetion

            throw new \Exception('Invalid structure given');

          }


          $children = buildTree($elements, $element['id'], $managedParent);

          if ($children) {

              $element['children'] = $children;

          }

          $branch[] = $element;

        }

    }


    return $branch;

}


查看完整回答
反對 回復 2022-06-11
  • 1 回答
  • 0 關注
  • 86 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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