<?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 關注
- 539 瀏覽
添加回答
舉報
0/150
提交
取消