• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-24) 18次浏览 已收录 0个评论

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

<br />header('Content-type: text/html; charset=utf-8');<br />//以下是原始数组<br />$array = array(<br />	0=>array(<br />		0=>array(<br />			'text' => '体育',<br />			'children' => array(<br />				0=>array(<br />					'text' => '篮球',<br />					'grade' => '1'<br />				),<br />				1=>array(<br />					'text' => '足球',<br />					'grade' => '3'<br />				)<br />			)<br />		),<br />		1=>array(<br />			'text' => '音乐',<br />			'children' => array(<br />				0=>array(<br />					'text' => '唱歌',<br />					'children' => array(<br />						0=>array(<br />							'text' => '儿歌三百首',<br />							'grade' => '1'<br />						)<br />					)<br />				),<br />				1=>array(<br />					'text' => '跳舞',<br />					'grade' => '3'<br />				)<br />			)<br />		)<br />	),<br />	1=>array(<br />		0=>array(<br />			'text' => '体育',<br />			'children' => array(<br />				0=>array(<br />					'text' => '篮球',<br />					'grade' => '2'<br />				),<br />				1=>array(<br />					'text' => '排球',<br />					'grade' => '5'<br />				)<br />			)<br />		),<br />		1=>array(<br />			'text' => '音乐',<br />			'children' => array(<br />				0=>array(<br />					't<strong>*本文来源gaodai#ma#com搞@代~码^网+</strong><strong>搞代gaodaima码</strong>ext' => '唱歌',<br />					'children' => array(<br />						0=>array(<br />							'text' => '儿歌三百首',<br />							'grade' => '4'<br />						)<br />					)<br />				)<br />			)<br />		)<br />	),<br />);<br /><br />//要求:递归遍历原始多维数组,将重复键值合并并累加grade值,以及记录重复次数。如:体育->篮球,经过处理后grade值为1+2=3,重复个数则为2(注:多维数组层级不定)<br /><br />//以下是想要的到的结果<br />$newarray = array(<br />	0=>array(<br />		0=>array(<br />			'text' => '体育',<br />			'children' => array(<br />				0=>array(<br />					'text' => '篮球',<br />					'grade' => '3',<br />					'count' => '2'<br />				),<br />				1=>array(<br />					'text' => '足球',<br />					'grade' => '3',<br />					'count' => '1'<br />				),<br />				2=>array(<br />					'text' => '排球',<br />					'grade' => '5',<br />					'count' => '1'<br />				)<br />			)<br />		),<br />		1=>array(<br />			'text' => '音乐',<br />			'children' => array(<br />				0=>array(<br />					'text' => '唱歌',<br />					'children' => array(<br />						0=>array(<br />							'text' => '儿歌三百首',<br />							'grade' => '5',<br />							'count' => '2'<br />						)<br />					)<br />				),<br />				1=>array(<br />					'text' => '跳舞',<br />					'grade' => '3',<br />					'count' => '1'<br />				)<br />			)<br />		)<br />	)<br />);<br />

——解决方案——————–
这个不会!帮你顶起来
——解决方案——————–
昨天晚上研究这个题目6个小时,最后抱着参考手册找各种数组函数,结果还是没做出来。
——解决方案——————–
降维还是必须的
然后是修改函数还是再写个函数都可以的

function untree($ar, $pid=0) {<br />  $res = array();<br />  foreach((array)$ar as $v) {<br />    if(is_numeric(key($v))) {<br />      $res = array_merge($res, untree($v));<br />      continue;<br />    }<br />    if(! isset($v['pid'])) $v['pid'] = $pid;<br />    if(isset($v['children'])) {<br />      $t = $v['children'];<br />      unset($v['children']);<br />    }<br />    $res[] = $v;<br />    if(! empty($t)) $res = array_merge($res, untree($t, $v['id']));<br />  }<br />  return $res;<br />}

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php递归遍历多维数组,合并重复值并记要重复次数
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址