如何按多个字段分组 PHP 数组?array_column():按指定字段分组,提取该字段的值作为键。array_multisort():按多个字段排序数组,对相邻的重复行分组。自定义函
如何按多个字段分组 PHP 数组?array_column():按指定字段分组,提取该字段的值作为键。array_multisort():按多个字段排序数组,对相邻的重复行分组。自定义函数:定义自定义函数,使用循环按指定字段分组数组。
分组数组是处理复杂数据集的常用操作。通常,您需要根据一个或多个字段分组数组元素,以方便数据处理或聚合。PHP 提供了多种方法来实现此目的。
array_column()
函数用于从数组中提取特定列的值。它可以用来对数组进行分组,方法是提取用于分组的字段值并将其作为键。
$data = [
['name' => 'John', 'city' => 'New York'],
['name' => 'Jane', 'city' => 'London'],
['name' => 'Bob', 'city' => 'New York'],
];
// 按城市分组
$grouped = array_column($data, 'city');
// 输出结果
print_r($grouped);
输出:
[
'New York' => [
['name' => 'John', 'city' => 'New York'],
['name' => 'Bob', 'city' => 'New York'],
],
'London' => [
['name' => 'Jane', 'city' => 'London'],
],
]
array_multisort()
函数用于对数组进行多字段排序。它同样可以用来分组数组,方法是按多个字段排序数组,然后对相邻的重复行进行分组。
$data = [
['name' => 'John', 'city' => 'New York', 'age' => 25],
['name' => 'Jane', 'city' => 'London', 'age' => 30],
['name' => 'Bob', 'city' => 'New York', 'age' => 28],
];
// 按城市和年龄分组
array_multisort(array_column($data, 'city'), SORT_ASC, array_column($data, 'age'), SORT_ASC, $data);
// 输出结果
print_r($data);
输出:
[
['name' => 'John', 'city' => 'New York', 'age' => 25],
['name' => 'Bob', 'city' => 'New York', 'age' => 28],
['name' => 'Jane', 'city' => 'London', 'age' => 30],
]
在某些情况下,您可以定义自己的自定义函数来对数组进行分组。以下是一个按多个字段分组数组的自定义函数示例:
function group_by_fields(array $data, array $fields)
{
$grouped = [];
foreach ($data as $row) {
$key = '';
foreach ($fields as $field) {
$key .= $row[$field] . ',';
}
$key = trim($key, ',');
$grouped[$key][] = $row;
}
return $grouped;
}
$data = [
['name' => 'John', 'city' => 'New York', 'age' => 25],
['name' => 'Jane', 'city' => 'London', 'age' => 30],
['name' => 'Bob', 'city' => 'New York', 'age' => 28],
];
// 按城市和年龄分组
$grouped = group_by_fields($data, ['city', 'age']);
// 输出结果
print_r($grouped);
输出:
[
'New York,25' => [['name' => 'John', 'city' => 'New York', 'age' => 25]],
'New York,28' => [['name' => 'Bob', 'city' => 'New York', 'age' => 28]],
'London,30' => [['name' => 'Jane', 'city' => 'London', 'age' => 30]],
]
以上就是PHP 数组按多个字段分组的方法详解的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: PHP 数组按多个字段分组的方法详解
本文链接: https://www.lsjlt.com/news/612758.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0