第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

創(chuàng)建第 n 層形式數(shù)組列表的數(shù)組樹

創(chuàng)建第 n 層形式數(shù)組列表的數(shù)組樹

PHP
喵喵時(shí)光機(jī) 2021-12-24 16:01:44
我只有第 N 個(gè)級別數(shù)組返回,此函數(shù)返回所有子列表$arr = array(array('id'=>100, 'parentid'=>0, 'name'=>'a'),array('id'=>101, 'parentid'=>100, 'name'=>'a'),  array('id'=>102, 'parentid'=>101, 'name'=>'a'),  array('id'=>103, 'parentid'=>101, 'name'=>'a'),);$new = array();foreach ($arr as $a){    $new[$a['parentid']][] = $a;}$tree = createTree($new, array($arr[0]));print_r($tree);function createTree(&$list, $parent){    $tree = array();    foreach ($parent as $k=>$l){        if(isset($list[$l['id']])){            $l['children'] = createTree($list, $list[$l['id']]);        }        $tree[] = $l;    }     return $tree;}此函數(shù)返回?cái)?shù)組中的所有數(shù)據(jù)。此函數(shù)返回不能返回特定級別完成然后中斷并返回值
查看完整描述

2 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

像這樣嘗試。


$array = array(

    array('id'=>100, 'parentid'=>0, 'name'=>'a'),

    array('id'=>101, 'parentid'=>100, 'name'=>'a'),

    array('id'=>102, 'parentid'=>101, 'name'=>'a'),

    array('id'=>103, 'parentid'=>101, 'name'=>'a')

);


echo '<pre>';

print_r(array_to_tree($array));

exit;

轉(zhuǎn)換樹的函數(shù)。


function array_to_tree(array $array, $parent_id = 0)

{

    $array = array_combine(array_column($array, 'id'), array_values($array));


    foreach ($array as $k => &$v) {

        if (isset($array[$v['parentid']])) {

            $array[$v['parentid']]['children'][$k] = &$v;

        }

        unset($v);

    }


    return array_filter($array, function($v) use ($parent_id) {

        return $v['parentid'] == $parent_id;

    });

}

輸出將。

http://img1.sycdn.imooc.com//61c57e880001a67205250604.jpg

根據(jù)您的要求,您只需要 2 個(gè)級別,然后不要使用遞歸函數(shù)。//從foreach中移除createTree


function createTree(&$list, $parent){

    $tree = array();

    foreach ($parent as $k=>$l){

        if(isset($list[$l['id']])){

            $l['children'] = $list[$l['id']]; //remove createTree from here.

        }

        $tree[] = $l;

    } 

    return $tree;

}


查看完整回答
反對 回復(fù) 2021-12-24
?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊

這會預(yù)處理輸入數(shù)據(jù),以便處理它們的順序是父 ID 降序,然后是 ID 升序。這意味著您可以一次性累積所有菜單(代碼中的一些注釋)......


$array = array(

    array('id'=>100, 'parentid'=>0, 'name'=>'a'),

    array('id'=>101, 'parentid'=>100, 'name'=>'a'),

    array('id'=>102, 'parentid'=>101, 'name'=>'a'),

    array('id'=>103, 'parentid'=>101, 'name'=>'a')

);


print_r(array_to_tree($array));


function array_to_tree ( array $input ): array {

    $new = [];

    // Sort data in reverse order of parent ID, normal order of ID within parent ID

    usort($input, function ( $a, $b ) {

        return ( $a['parentid'] == $b['parentid'] )? 

            $a['id']- $b['id']:

            $b['parentid'] - $a['parentid'];

    });

    foreach ( $input as $inp )  {

        // Add data to parent ID

        $new[$inp['parentid']][$inp['id']] = $inp;

        // If data already exists for this ID, then this is also a parent

        if ( isset( $new[$inp['id']]) )   {

            // Add existing data to new item and remove old one

            $new[$inp['parentid']][$inp['id']] += $new[$inp['id']];

            unset($new[$inp['id']]);

        }

    }


    return $new;

}


查看完整回答
反對 回復(fù) 2021-12-24
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號