数组格式转换
<?php /*** * 数组归类转换 * 把$arr转成$b的格式 * 规定一次循环必须借助于内置函数 **/ $arr = [ [‘name‘ => ‘jack‘, ‘hobby‘ => ‘西瓜‘], [‘name‘ => ‘jack‘, ‘hobby‘ => ‘冬瓜‘], [‘name‘ => ‘rose‘, ‘hobby‘ => ‘木瓜‘], [‘name‘ => ‘rose‘, ‘hobby‘ => ‘甜瓜‘], [‘name‘ => ‘jack‘, ‘hobby‘ => ‘地瓜‘], [‘name‘ => ‘rose‘, ‘hobby‘ => ‘香瓜‘] ]; $b = [‘name‘ => ‘jack‘, ‘hobby‘ => [‘西瓜‘, ‘冬瓜‘, ‘地瓜‘]]; $arr2 = []; foreach ($arr as $k => $v) { $col = array_column($arr2, ‘name‘);//获取所有指定键名的键值 if (!in_array($v[‘name‘], $col)) { $arr2[] = [‘name‘ => $v[‘name‘]]; } $col = array_column($arr2, ‘name‘);//再次获取所有指定键名的键值 $col_key = array_search($v[‘name‘], $col);//按照键值查找索引 $arr2[$col_key][‘hobby‘][] = $v[‘hobby‘];//存入数组 } echo ‘<pre/>‘; var_dump($arr2);
原文:https://www.cnblogs.com/huay/p/11375556.html