映射多维数组 - PHP



我有以下结构,我不知道如何映射它(我不知道"map"是否真的是我所需要的:S)

var -> child1 -> subchild1
              -> subchild2 -> subsubchild1
    -> child2 -> subchild3

所以,我需要将其映射/解析为如下所示的内容:

     var.child1.subchild1
     var.child1.subchild2.subsubchild1
     var.child2.subchild1

我设法做到了第二级:

     var.child1.subchild1
     var.child1.subchild2

这是代码

function foo($a,$txt) {
    if (isset($a['childs'])) {
        foreach ($a['childs'] as $ch) {
            $txt .= foo($ch,$txt);
        }
    } else {
        $txt .= ".".$a['name'];
    }
    return $txt;
}
foreach ($arr as $childs) {
    $aux = $r;
    var_dump(foo($childs,$aux));
    echo "<br>";
}

你有什么想法吗?

谢谢!

我什至无法想象你为什么需要这个,但你应该使用递归,就像这样:

<?php
$test_arr = array('name'=>'var','childs'=>
    array(
        array(
            'name'=>'child1',
            'childs'=>array(
                'subchild1',
                array(
                    'name' => 'subchild2',
                    'childs' => array(
                        'subsubchild1',
                        'subsubchild2'
                    )
                )
            )
        ),
        array(
            'name'=>'child2',
            'childs'=> array('subchild1')
        )
    )
);
function map($arr) {
    if(is_array($arr) && isset($arr['childs']) && $arr['childs']) {
        $result = array();
        foreach($arr['childs'] as $child) {
            foreach(map($child) as $child2) $result[] = $arr['name'].".".$child2;
        }
        return $result;
    }
    else return array($arr);
}
print_r(map($test_arr));
?>

给:

Array
(
    [0] => var.child1.subchild1
    [1] => var.child1.subchild2.subsubchild1
    [2] => var.child1.subchild2.subsubchild2
    [3] => var.child2.subchild1
)

相关内容

  • 没有找到相关文章

最新更新