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

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

從上到下循環(huán)進(jìn)入多維數(shù)組

從上到下循環(huán)進(jìn)入多維數(shù)組

PHP
拉丁的傳說 2023-11-03 20:17:12
我有這棵樹:Array(    [0] => Array        (            [id] => 1            [parent_id] => 0            [title] => Parent Page            [children] => Array                        (                            [0] => Array                                (                                    [id] => 2                                    [parent_id] => 1                                    [title] => Sub Page                                                                                    ),                            [1] => Array                                (                                    [id] => 5                                    [parent_id] => 1                                    [title] => Sub Page 2                                                                                     )                        )        )    [1] => Array        (            [id] => 4            [parent_id] => 0            [title] => Another Parent Page        ))我正在尋找從上到下的顯示。并顯示類似這樣的內(nèi)容:1 1.21.54但如果我有 id 3,它是 5 的葉子,我會喜歡這樣:11.21.51.5.34我進(jìn)行了很多搜索,當(dāng)我使用遞歸時(shí),我的大腦是有限的。我已經(jīng)嘗試過這個(gè):function printAll($a){  foreach ($a as $v){      if (!array_key_exists('children', $v)){          debugLog($v['id']);          return;      }      else{          $arrayChildrens = $v['children'];          foreach($arrayChildrens as $c){              $arrayChildrens = $c['children'];              $this->printAll($arrayChildrens);          }      }  }}但不起作用..我嘗試開始只是為了顯示1254但我的目標(biāo)是在 id 之前顯示 id 父母(就像我之前向你展示的那樣)多謝 !
查看完整描述

2 回答

?
元芳怎么了

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

這個(gè)函數(shù)應(yīng)該會給你你期望的輸出。


function printAll($a, $prefix = '') {


    //loop through $a

    foreach($a as $v) {


        //echo current level `id` with previous `$prefix`

        echo "{$prefix}{$v['id']}\n";


        //check if current level contains children

        if(!empty($v['children'])) {


            //clean up prefix to remove extra `.` at the end of prefixes

            $prev_prefix = rtrim($prefix, '.');


            //recurse printAll again passing the children as `$a` and a `$prefix` being the previous levels combined e.g `1.5`

            //also clean up extra periods at the start of the prefix

            printAll($v['children'], ltrim("{$prev_prefix}.{$v['id']}.", "."));

        }

    }

}

輸出:


1

1.2

1.5

1.5.3

4

使用正確的回報(bào)

通常,對于一個(gè)函數(shù),您實(shí)際上希望該函數(shù)返回值,而不是自動將它們回顯到您的頁面。如果您希望此函數(shù)返回一個(gè)值數(shù)組而不是回顯它們,您可以這樣做:


function printAll($a, $level = '', $values = []) {

    foreach($a as $v) {

        $values[] = $value = "{$level}{$v['id']}";

        if(!empty($v['children'])) {

            $values = printAll($v['children'], "{$value}.", $values);

        }

    }

    return $values;

}

將會得到這樣的結(jié)果:


Array

(

    [0] => 1

    [1] => 1.2

    [2] => 1.5

    [3] => 1.5.3

    [4] => 4

)


查看完整回答
反對 回復(fù) 2023-11-03
?
MYYA

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

這應(yīng)該可以完成工作。


$arr = array(

    array(

        'id' => 1,

        'parent_id' => 0,

        'title' => 'Parent Page',

        'children' => array(

            array(

                'id' => 2,

                'parent_id' => 1,

                'title' => 'Sub Page',

            ),

            array(

                'id' => 5,

                'parent_id' => 1,

                'title' => 'Sub Page 2',

                'children' => array(

                    array(

                        'id' => 7,

                        'parent_id' => 5,

                        'title' => 'Sub Page',

                    ),

                    array(

                        'id' => 8,

                        'parent_id' => 5,

                        'title' => 'Sub Page 2',

                    )

                )

            )

        )

    ),

    array(

        'id' => 4,

        'parent_id' => 0,

        'title' => 'Another Parent Page',

    )

);

function printAll($arr, $parent = [])

{

    if (is_array($arr)) {

        foreach ($arr as $k => $v) {

            if (isset($v['id'])) {

                $parent[] = $v['id'];

                echo implode('.', $parent) . PHP_EOL;

            }

            if (isset($v['children'])) {

                printAll($v['children'], $parent);

            }

            array_pop($parent);

        }

    }

}

printAll($arr);

輸出


1

1.2

1.5

1.5.7

1.5.8

4

工作演示。



查看完整回答
反對 回復(fù) 2023-11-03
  • 2 回答
  • 0 關(guān)注
  • 149 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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