簡體   English   中英

PHP:如何從遞歸函數返回多維數組

[英]PHP: how to return multi dimension array from recursive function

這是我的代碼,需要您的幫助才能理解。

<?php $tree = array(
array(
    'name' => 'Item-1', 
    'children' => array()),

array('name' => 'Item-2', 
    'children' => array(
    array('name' => 'Item-2-1', 
        'children' => array()),
)),
array('name' => 'Item-3', 
    'children' => array(
    array('name' => 'Item-3-1', 
        'children' => array()),

    array('name' => 'Item-3-2', 
        'children' => array(
        array('name' => 'Item-3-2-1', 
            'children' => array()),

        array('name' => 'Item-3-2-2', 
            'children' => array()),

        array('name' => 'Item-3-2-3', 
            'children' => array(
            array('name' => 'Item-3-2-3-1', 
                'children' => array()),
        )),
    )),
)),

);

我需要的是一個遞歸函數,它將返回所有名稱(名稱)。 例如:

Item-1
Item-2
Item-2-1
Item-3
Item-3-1
Item-3-2

........

我的嘗試,但似乎對我沒有用

function tree($tree){ 
    foreach ($tree as $key =>$value) { 
         foreach ($value as $key=>$value){ 
            echo "$value<br>"; } 
    echo "<br>"; } }

您可以使用RecursiveArrayIteratorRecursiveIteratorIterator

$ai = new RecursiveIteratorIterator(new RecursiveArrayIterator($tree));
echo "<pre>";
foreach ( $ai as $value ) {
    echo $value, PHP_EOL;
}

輸出量

Item-1
Item-2
Item-2-1
Item-3
Item-3-1
Item-3-2
Item-3-2-1
Item-3-2-2
Item-3-2-3
Item-3-2-3-1

觀看現場演示

http://snipplr.com/view/10200/

// Recursively traverses a multi-dimensional array.
function traverseArray($array)
{ 
    // Loops through each element. If element again is array, function is recalled. If not, result is echoed.
    foreach($array as $key=>$value)
    { 
        if(is_array($value))
        { 
            traverseArray($value); 
        }else{
            echo $key." = ".$value."<br />\n"; 
        } 
    }
}

另請參見使用遞歸求和二維數組中的整數?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM