我有以下结构,我不知道如何映射它(我不知道"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
)