关于网友提出的“求助关于多维数组降维、深度和获取父键的问题”问题疑问,本网通过在网上对“求助关于多维数组降维、深度和获取父键的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:求助关于多维数组降维、深度和获取父键的问题
描述:本帖最后由 gamepowernet 于 2015-08-30 06:27:36 编辑
php数组结构
我有一个数组,结构是这样的:
$json = '[{"id":27,"children":[{"id":28,"children":[{"id":30},{"id":29}]}]},{"id":31},{"id":32}]';
$arry = json_decode($json,true);
也有可能是这样的结构:
$json = '[{"id":27,"children":[{"id":30,"children":[{"id":31}]}]},{"id":28,"children":[{"id":29}]},{"id":32}]';
$arry = json_decode($json,true);
也就是说层数、顺序都不是固定的。
我想把他降为一维数组,并记录下每一个一维数组的深度,对应的父键等
以下是第二个数组期望得到的结果:
Array (
[0] => Array ( [id] => 27 [level] => 0 [parent] => 0 )
[1] => Array ( [id] => 30 [level] => 1 [parent] => 27 )
[2] => Array ( [id] => 31 [level] => 2 [parent] => 30 )
[3] => Array ( [id] => 28 [level] => 0 [parent] => 0 )
[4] => Array ( [id] => 29 [level] => 1 [parent] => 28 )
[5] => Array ( [id] => 32 [level] => 0 [parent] => 0 )
)
想了一晚上了。。。请大神帮帮忙
解决方案1:$json = '[{"id":27,"children":[{"id":30,"children":[{"id":31}]}]},{"id":28,"children":[{"id":29}]},{"id":32}]';
$arry = json_decode($json,true);
print_r(foo($arry));
function foo($ar, $level=0, $parent=0, &$res=array()) {
foreach($ar as $v) {
$t = array();
$v['level'] = $level;
$v['parent'] = $parent;
if(isset($v['children'])) {
$t = $v['children'];
unset($v['children']);
}
$res[] = $v;
if($t) foo($t, $level+1, $v['id'], $res);
}
return $res;
}
Array
(
[0] => Array
(
[id] => 27
[level] => 0
[parent] => 0
)
[1] => Array
(
[id] => 30
[level] => 1
[parent] => 27
)
[2] => Array
(
[id] => 31
[level] => 2
[parent] => 30
)
[3] => Array
(
[id] => 28
[level] => 0
[parent] => 0
)
[4] => Array
(
[id] => 29
[level] => 1
[parent] => 28
)
[5] => Array
(
[id] => 32
[level] => 0
[parent] => 0
)
)
以上介绍了“求助关于多维数组降维、深度和获取父键的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1058398.html