这个PHP数组怎么处理?请教!

这个PHP数组怎么处理?请教!

问题描述:

原数组

$arr = [
            [
                'name'  => '国家站',
                'title' => '美国站',
                'pic'   => '111'
            ],
            [
                'name'  => '国家站',
                'title' => '英国站',
                'pic'   => '222'

            ],
            [
                'name'  => '排行榜',
                'title' => '每日',
                'pic'   => '333'

            ],
            [
                'name'  => '排行榜',
                'title' => '每月',
                'pic'   => '444'

            ]
        ];

转换成

$arr1=[
            [
                'name'=>'国家站',
                'list'=>[
                    [
                        'title' => '美国站',
                        'pic'   => '111'
                    ],
                    [
                        'title' => '英国站',
                        'pic'   => '222'
                    ]
                ],
            ],
            [
                'name'=>'排行榜',
                'list'=>[
                    [
                        'title' => '每日',
                        'pic'   => '333'
                    ],
                    [
                        'title' => '每月',
                        'pic'   => '444'
                    ]
                ],
            ]

        ];

就是name 一样的 list合并

代码如下,满意请采纳~

$arr = [
    [
        'name'  => '国家站',
        'title' => '美国站',
        'pic'   => '111'
    ],
    [
        'name'  => '国家站',
        'title' => '英国站',
        'pic'   => '222'
    ],
    [
        'name'  => '排行榜',
        'title' => '每日',
        'pic'   => '333'
    ],
    [
        'name'  => '排行榜',
        'title' => '每月',
        'pic'   => '444'
    ]
];

$temp = array();
$result = array();
foreach($arr as $item) {

if(!in_array($item['name'],$temp)){
    array_push($temp, $item['name']);
    $result[count($temp)-1]['name'] = $item['name'];
}
$result[count($temp)-1]['list'][] = [
        'title' => $item['title'],
        'pic' => $item['pic']
    ];


}
var_dump($result);

题主要的代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~

img

<meta charset="utf-8">
<?php
$arr = [
            [
                'name'  => '国家站',
                'title' => '美国站',
                'pic'   => '111'
            ],
            [
                'name'  => '国家站',
                'title' => '英国站',
                'pic'   => '222'
            ],
            [
                'name'  => '排行榜',
                'title' => '每日',
                'pic'   => '333'
            ],
            [
                'name'  => '排行榜',
                'title' => '每月',
                'pic'   => '444'
            ]
        ];
$arr1=[];
function getItem($name){
  global $arr1;
  $item=false;
  for($i=0;$i<count($arr1);$i++)  if($arr1[$i]['name']==$name)return $i;
  $item=['name'=>$name,'list'=>[]];
  $arr1[]=$item;
  return count($arr1)-1;
}
 foreach($arr as $item){
   $index=getItem($item['name']);
   $arr1[$index]['list'][]=['title'=>$item['title'],'pic'=>$item['pic']];
 }
 print_r($arr1);
?>


把数组转换为JSON格式,就是这样的格式了。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632