猿问

PHP 操作数组问题

<?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'=> ['旅游']
    ]
);

慕妹3242003
浏览 514回答 5
5回答

慕的地8271018

$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);

摇曳的蔷薇

$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 判断的时间

不负相思意

代码`$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

一个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); }
随时随地看视频慕课网APP
我要回答