如何按多个字段分组 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);输出:
立即学习“PHP免费学习笔记(深入)”;
[
'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);输出:
立即学习“PHP免费学习笔记(深入)”;
[
['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);输出:
立即学习“PHP免费学习笔记(深入)”;
[
'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 数组按多个字段分组的方法详解的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号