array(4) { [0] => array(2) { ["server_name"] => string(12) "天下争霸" ["role_name"] => string(15) "取名字好烦" } [1] => array(2) { ["server_name"] => string(12) "天下争霸" ["role_name"] => string(15) "取名字好烦" } [2] => array(2) { ["server_name"] => string(13) "天下争霸2" ["role_name"] => string(16) "取名字好烦2" } [3] => array(2) { ["server_name"] => string(12) "雪域172服" ["role_name"] => string(9) "茅寄风" } }
原始数组如上
需求:server_name相等的元素,role_name进行合并
第一步,数组格式整理
foreach ($list as $k => $v) { $list[$k]['role_name'] = array($v['role_name']); }
处理后得到的数组如下:
array(4) { [0] => array(2) { ["server_name"] => string(12) "天下争霸" ["role_name"] => array(1) { [0] => string(15) "取名字好烦" } } [1] => array(2) { ["server_name"] => string(12) "天下争霸" ["role_name"] => array(1) { [0] => string(15) "取名字好烦" } } [2] => array(2) { ["server_name"] => string(13) "天下争霸2" ["role_name"] => array(1) { [0] => string(16) "取名字好烦2" } } [3] => array(2) { ["server_name"] => string(12) "雪域172服" ["role_name"] => array(1) { [0] => string(9) "茅寄风" } } }
第二部,根据server_name的值合并数组,并删除已经合并的元素
foreach ($list as $k => $v) { foreach ($list as $k1 => $v1){ if($k!=$k1){ if($v['server_id']==$v1['server_id']){ $list[$k1]['role_name'] = array_merge($v['role_name'],$v1['role_name']); unset($list[$k]); } } } }
处理后得到的数组如下:
array(3) { [0] => array(2) { ["server_name"] => string(12) "天下争霸" ["role_name"] => array(2) { [0] => string(15) "取名字好烦" [1] => string(15) "取名字好烦" } } [2] => array(2) { ["server_name"] => string(13) "天下争霸2" ["role_name"] => array(1) { [0] => string(16) "取名字好烦2" } } [3] => array(2) { ["server_name"] => string(12) "雪域172服" ["role_name"] => array(1) { [0] => string(9) "茅寄风" } } }