为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 操作数组问题

PHP 操作数组问题

PHP
慕妹3242003 2019-03-09 22:19:19
<?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);
查看完整回答
反对 回复 2019-03-18
?
摇曳的蔷薇

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

查看完整回答
反对 回复 2019-03-18
?
不负相思意

TA贡献1777条经验 获得超10个赞

https://img1.sycdn.imooc.com//5c8f3d6d0001233608000332.jpg

https://img1.sycdn.imooc.com//5c8f3d6f0001701104300459.jpg
代码
`
$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));
`

查看完整回答
反对 回复 2019-03-18
?
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);
}
查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 513 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信