您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> PHP >> 求助关于多维数组降维、深度和获取父键的问题

求助关于多维数组降维、深度和获取父键的问题

来源:网络整理     时间:2016/5/14 1:07:51     关键词:关于,多维

关于网友提出的“求助关于多维数组降维、深度和获取父键的问题”问题疑问,本网通过在网上对“求助关于多维数组降维、深度和获取父键的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:求助关于多维数组降维、深度和获取父键的问题
描述:

本帖最后由 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

相关图片

相关文章