映射多维数组-PHP
我有以下结构,我不知道如何映射它(我不知道“map”是否也是我真正需要的:S) 因此,我需要将其映射/解析为如下内容:映射多维数组-PHP,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下结构,我不知道如何映射它(我不知道“map”是否也是我真正需要的:S) 因此,我需要将其映射/解析为如下内容: var.child1.subchild1 var.child1.subchild2.subsubchild1 var.child2.subchild1 <?php $test_arr = array('name'=>'var','childs'=> array( array( 'n
var.child1.subchild1
var.child1.subchild2.subsubchild1
var.child2.subchild1
<?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));
?>
我设法做到了第二级:
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>";
}
函数foo($a,$txt){
如果(isset($a['childs'])){
foreach($a['childs']作为$ch){
$txt.=foo($ch,$txt);
}
}否则{
$txt.=“..$a['name'];
}
返回$txt;
}
foreach($arr as$childs){
$aux=$r;
变量转储(foo($childs,$aux));
回声“”; } 你有什么想法吗
谢谢 我甚至无法想象你为什么需要这个,但你应该使用递归,就像这样:
var.child1.subchild1
var.child1.subchild2.subsubchild1
var.child2.subchild1
<?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));
?>
谢谢我不得不做一些改变,但它奏效了。它用于mongodb查询,以检查字段是否存在:find('var.child1.subchild1':{'$exists':true});