PHP头条
热点:

php递归遍历多维数组,合并重复值并记要重复次数


php递归遍历多维数组,合并重复值并记录重复次数

header('Content-type: text/html; charset=utf-8');
//以下是原始数组
$array = array(
0=>array(
0=>array(
'text' => '体育',
'children' => array(
0=>array(
'text' => '篮球',
'grade' => '1'
),
1=>array(
'text' => '足球',
'grade' => '3'
)
)
),
1=>array(
'text' => '音乐',
'children' => array(
0=>array(
'text' => '唱歌',
'children' => array(
0=>array(
'text' => '儿歌三百首',
'grade' => '1'
)
)
),
1=>array(
'text' => '跳舞',
'grade' => '3'
)
)
)
),
1=>array(
0=>array(
'text' => '体育',
'children' => array(
0=>array(
'text' => '篮球',
'grade' => '2'
),
1=>array(
'text' => '排球',
'grade' => '5'
)
)
),
1=>array(
'text' => '音乐',
'children' => array(
0=>array(
'text' => '唱歌',
'children' => array(
0=>array(
'text' => '儿歌三百首',
'grade' => '4'
)
)
)
)
)
),
);

//要求:递归遍历原始多维数组,将重复键值合并并累加grade值,以及记录重复次数。如:体育->篮球,经过处理后grade值为1+2=3,重复个数则为2(注:多维数组层级不定)

//以下是想要的到的结果
$newarray = array(
0=>array(
0=>array(
'text' => '体育',
'children' => array(
0=>array(
'text' => '篮球',
'grade' => '3',
'count' => '2'
),
1=>array(
'text' => '足球',
'grade' => '3',
'count' => '1'
),
2=>array(
'text' => '排球',
'grade' => '5',
'count' => '1'
)
)
),
1=>array(
'text' => '音乐',
'children' => array(
0=>array(
'text' => '唱歌',
'children' => array(
0=>array(
'text' => '儿歌三百首',
'grade' => '5',
'count' => '2'
)
)
),
1=>array(
'text' => '跳舞',
'grade' => '3',
'count' => '1'
)
)
)
)
);

------解决方案--------------------
这个不会!帮你顶起来
------解决方案--------------------
昨天晚上研究这个题目6个小时,最后抱着参考手册找各种数组函数,结果还是没做出来。
------解决方案--------------------
降维还是必须的
然后是修改函数还是再写个函数都可以的
function untree($ar, $pid=0) {
  $res = array();
  foreach((array)$ar as $v) {
    if(is_numeric(key($v))) {
      $res = array_merge($res, untree($v));
      continue;
    }
    if(! isset($v['pid'])) $v['pid'] = $pid;
    if(isset($v['children'])) {
      $t = $v['children'];
      unset($v['children']);
    }
    $res[] = $v;
    if(! empty($t)) $res = array_merge($res, untree($t, $v['id']));
  }
  return $res;
}
Array
(
    [0] => Array
        (
            [id] => 87073074
            [pid] => 0
            [text] => 白田最新範疇
        )

    [1] => Array
        (
            [id] => 67852256
            [pid] => 87073074
            [text] => 範疇知識
        )

    [2] => Array
        (
            [id] => 44740741
            [pid] => 67852256
            [text] => 體能與健康
        )

    [3] => Array
        (
            [id] => 66256396

www.phpzy.comtrue/phprm/4774.htmlTechArticlephp递归遍历多维数组,合并重复值并记要重复次数 php递归遍历多维数组,合并重复值并记录重复次数 header('Content-type:text/html;charset=utf-8'); //以下是原始数组 $array=array( 0=>array( 0=>array( 'tex...

相关文章

相关频道:

PHP之友评论

今天推荐