<?php
//////当前查询出来的数据
$redata = array(
0=>['id'=>1,'name'=>'张三','age'=>22,'hobby'=>'学习'],
1=>['id'=>1,'name'=>'张三','age'=>22,'hobby'=>'骑行'],
2=>['id'=>2,'name'=>'李四','age'=>20,'hobby'=>'旅游'],
);
//怎么样才能转换成下面这种形式的? 写了一上午 愣是没写出来
$arr = array(
0=>[
'id'=>1,'name'=>'张三','age'=>22,'hobby'=> ['学习', '骑行']
],
1=>[
'id'=>2,'name'=>'李四','age'=>20,'hobby'=> ['旅游']
]
);
5 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
$arr = [];
foreach($redata as $k=>$row){
foreach($row as $key => $item){
if($key === 'hobby'){
$arr[$row['id']][$key][] = $item;
}else{
$arr[$row['id']][$key] = $item;
}
}
}
var_dump($arr);
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
$arr = [];
foreach($redata as $v){
$arr[$v['id']]['id'] = $v['id'];
$arr[$v['id']]['name'] = $v['name'];
$arr[$v['id']]['age'] = $v['age'];
$arr[$v['id']]['hobby'][] = $v['hobby'];
}
$idMap = array_column($arr,'id');
array_multisort($arr,SORT_ASC,$idMap);
var_dump($arr);
数组字段是固定的话 省去 if
判断的时间
不负相思意
TA贡献1777条经验 获得超10个赞
代码
`
$redata = array(
0=>['id'=>1,'name'=>'张三','age'=>22,'hobby'=>'学习'],
1=>['id'=>1,'name'=>'张三','age'=>22,'hobby'=>'骑行'],
2=>['id'=>2,'name'=>'李四','age'=>20,'hobby'=>'旅游'],
);
function hebing($redata){
foreach ($redata as $k => $v) {
if($redata[$k]['id']==$redata[$k+1]['id']){
$redata[$k+1]['hobby'] = [$redata[$k]['hobby'],$redata[$k+1]['hobby']];
array_splice($redata, $k, 1);
}
}
return $redata;
}
var_dump(hebing($redata));
`
qq_笑_17
TA贡献1818条经验 获得超7个赞
一个foreach还是好理解吧.
function hobby_merge($redata)
{
$result = [];
foreach($redata as $item) {
if (!isset($result[$item['id']])) {
$item['hobby'] = (array) $item['hobby'];
$result[$item['id']] = $item;
continue;
}
$result[$item['id']]['hobby'][] = $item['hobby'];
}
return array_values($result);
}
- 5 回答
- 0 关注
- 513 浏览
添加回答
举报
0/150
提交
取消