php - 如何在一列php中对子数组进行分组
问题描述
我有这样的数组:
[
0: {name: "Judi", age: 15, hobby: "playing a game"},
1: {name: "Judi", age: 15, hobby: "swimming"},
2: {name: "Judi", age: 15, hobby: "playing a basketball"},
3: {name: "Jedi", age: 14, hobby: "coding"},
4: {name: "Jedi", age: 14, hobby: "reading"},
5: {name: "Jedi", age: 14, hobby: "listen to the music"},
]
我想让我的数据看起来像这样:
[
0: {name: "Judi", age: 15, hobby: "playing a game, swimming, playing a basketball"},
0: {name: "Jedi", age: 14, hobby: "coding, reading, listen to the music"},
]
如何像这样对我的数据进行分组?谢谢你
解决方案
这确实是一个非常简单的迭代并构建了一个新数组。像这样的东西。
<?php
$array = [
['name' => 'Judi', 'age' => 15, 'hobby' => 'playing a game'],
['name' => 'Judi', 'age' => 15, 'hobby' => 'swimming'],
['name' => 'Judi', 'age' => 15, 'hobby' => 'playing a basketball'],
['name' => 'Jedi', 'age' => 14, 'hobby' => 'coding'],
['name' => 'Jedi', 'age' => 14, 'hobby' => 'reading'],
['name' => 'Jedi', 'age' => 14, 'hobby' => 'listen to the music'],
];
$result = [];
foreach ($array as $item) {
$key = $item['name'] . $item['age'];
if (!array_key_exists($key, $result)) {
$result[$key] = [
'name' => $item['name'],
'age' => $item['age'],
'hobby' => '',
];
}
$result[$key]['hobby'] = $result[$key]['hobby'] ? $result[$key]['hobby'] . ', ' . $item['hobby'] : $item['hobby'];
}
var_dump(array_values($result));
推荐阅读
- opencv - OpenCV - 确定手腕的位置
- ios - 带参数和不带参数的闭包语法
- php - 使用 CodeIgniter 备份 MySQL 数据库为每个表返回单个查询
- javascript - React Native - 通过电话发送短信
- laravel - 不支持使用 Auth::login() 的方法
- javascript - 如何使用 vue 中的道具进行相互依赖的表单输入?
- javascript - 在 google dialogflow fullfilment 中使用 node.js 文档未定义(服务器端)
- mongodb - 无法将日志发送到 /var/mongodb/logs/mongod.log 文件并且无法将 mongod 分叉并作为守护进程运行,我无法添加用户
- linux - 如何在目标“安装”后执行 cmake add_custom_command
- shiny - 隐藏闪亮的框内容并仅保留显示框的标题