0

これは私のコードです。理解するにはあなたの助けが必要です。

<?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()),
        )),
    )),
)),

);

私が必要とするのは、すべての名前 (名前) を返す 1 つの再帰関数です。例えば:

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>"; } }
4

2 に答える 2

1

あなたが使用することができRecursiveArrayIteratorますRecursiveIteratorIterator

$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

ライブデモを見る

于 2012-10-17T23:04:23.073 に答える
0

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"; 
        } 
    }
}

再帰を使用して 2 次元配列の整数を合計するも参照してください。

于 2012-10-17T23:04:36.733 に答える