PHP中怎么引用生成樹結(jié)構(gòu)

PHP中怎么引用生成樹結(jié)構(gòu),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括鉛山網(wǎng)站建設(shè)、鉛山網(wǎng)站制作、鉛山網(wǎng)頁(yè)制作以及鉛山網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,鉛山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到鉛山省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

PHP中的引用就是兩個(gè)變量指向了同一個(gè)地方,只要在變量前面增加了&符號(hào),它就變成了一個(gè)引用

$a='aaa';
$b=&$a;
$c=&$b;
xdebug_debug_zval('a','b','c');

輸出結(jié)果是:

a: (refcount=3, is_ref=1)='aaa'
b: (refcount=3, is_ref=1)='aaa'
c: (refcount=3, is_ref=1)='aaa'

“aaa”有了三個(gè)引用 , 并且是is_ref是引用類型,那也就意味著不管是我修改$b ,還是修改$c , "aaa"這個(gè)都會(huì)被改變

可以根據(jù)上面這個(gè)原理來(lái)把一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)的帶pid的逐行數(shù)據(jù),變成一個(gè)多層級(jí)的樹狀結(jié)構(gòu)

$data=array(
    array("id"=>2,"pid"=>1),
    array("id"=>3,"pid"=>1),
    array("id"=>4,"pid"=>2),
    array("id"=>5,"pid"=>2),
    array("id"=>6,"pid"=>3),
    array("id"=>7,"pid"=>3),
    array("id"=>1,"pid"=>0),
);
$refer=array();//存儲(chǔ)主鍵與數(shù)組單元的引用關(guān)系
//遍歷
foreach($data as $k=>$v){
    $refer[$v['id']]=&$data[$k];//為每個(gè)數(shù)組成員建立對(duì)應(yīng)關(guān)系
}
//遍歷2
foreach($data as $k=>$v){
        $parent=&$refer[$v['pid']];//獲取父分類的引用
        $parent['child'][]=&$data[$k];//在父分類的children中再添加一個(gè)引用成員
}
print_r($data);

利用了一個(gè)$refer數(shù)組,時(shí)間復(fù)雜度是O(n) , 只需要單層循環(huán),直接通過(guò)引用修改$data原數(shù)據(jù),生成一個(gè)樹狀結(jié)構(gòu)

Array
(
    [0] => Array
        (
            [id] => 2
            [pid] => 1
            [child] => Array
                (
                    [0] => Array
                        (
                            [id] => 4
                            [pid] => 2
                        )

                    [1] => Array
                        (
                            [id] => 5
                            [pid] => 2
                        )

                )

        )

    [1] => Array
        (
            [id] => 3
            [pid] => 1
            [child] => Array
                (
                    [0] => Array
                        (
                            [id] => 6
                            [pid] => 3
                        )

                    [1] => Array
                        (
                            [id] => 7
                            [pid] => 3
                        )

                )

        )

    [2] => Array
        (
            [id] => 4
            [pid] => 2
        )

    [3] => Array
        (
            [id] => 5
            [pid] => 2
        )

    [4] => Array
        (
            [id] => 6
            [pid] => 3
        )

    [5] => Array
        (
            [id] => 7
            [pid] => 3
        )

    [6] => Array
        (
            [id] => 1
            [pid] => 0
            [child] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [pid] => 1
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [pid] => 2
                                        )

                                    [1] => Array
                                        (
                                            [id] => 5
                                            [pid] => 2
                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 3
                            [pid] => 1
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 6
                                            [pid] => 3
                                        )

                                    [1] => Array
                                        (
                                            [id] => 7
                                            [pid] => 3
                                        )

                                )

                        )

                )

        )

)
$a='aaa';

$b=&$a;

$c=&$b;

xdebug_debug_zval('a','b','c');

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

本文題目:PHP中怎么引用生成樹結(jié)構(gòu)
鏈接分享:http://www.muchs.cn/article2/iidiic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)全網(wǎng)營(yíng)銷推廣、軟件開發(fā)、網(wǎng)站制作用戶體驗(yàn)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)