合并不同的值我有一个数组:滤波器2名维阵列和PHP
$arr = [
['id'=>1, 'name'=>'Peter', 'age'=>28],
['id'=>1, 'name'=>'David', 'age'=>28],
['id'=>2, 'name'=>'John', 'age'=>34],
['id'=>3, 'name'=>'Smith', 'age'=>36],
['id'=>3, 'name'=>'Smith', 'age'=>28],
];
欲通过柱的“id”过滤它,并合并不同的值。我需要输出:
$arr = [
['id'=>1, 'name'=>'Peter,David', 'age'=>28],
['id'=>2, 'name'=>'John', 'age'=>34],
['id'=>3, 'name'=>'Smith', 'age'=>'36,28']
];
是否有任何PHP函数(如:array_filter,array_walk,array_map,...)要做到这一点,没有下文循环的代码?
function combine_row($arr){
$last = null;
foreach ($arr as $key => $a){
if ($a['id']==$last['id']){
foreach ($a as $k=>$v) {
if($v!==$last[$k]) {
$arr[$key][$k].=','.$last[$k];
}
}
unset($arr[$key-1]);
}
$last = $a;
}
return $arr;
}
感谢您的帮助!
Phong,你解决了吗?让我知道如果我应该对我的答案进行更改 – Michael
对不起,迈克尔,我没有回来查看您的答案,因为我找到了通过使用Group_concat从mysql中修复它的方法。无论如何,你的答案是如此完美。我将其标记为已接受的答案。谢谢! –