PHP 数组分组:整理数据以获取有用见解115


数组是 PHP 中一个基本的数据结构,用于存储同类型的数据集合。分组数组是一种强大的技术,可帮助您对数据进行分类和组织,从而提取有用的见解。

按键分组

按键分组是将数组中的元素按其键值分组。这对于创建嵌套数据结构或根据特定键过滤数据非常有用。使用 `array_column()` 函数可以按键分组:
$indexedArray = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Carol']
];
$groupedArray = array_column($indexedArray, 'name', 'id');
print_r($groupedArray);

输出:
Array
(
[1] => Alice
[2] => Bob
[3] => Carol
)

按值分组

按值分组是将具有相同值的数组元素分组在一起。这对于查找数组中出现频率最高的值或检测重复值非常有用。使用 `group_by()` 方法可以按值分组(例如使用 "illuminate/collections" 包):
use Illuminate\Support\Collection;
$indexedArray = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Carol'],
['id' => 4, 'name' => 'Alice']
];
$collection = new Collection($indexedArray);
$groupedArray = $collection->groupBy('name');
foreach ($groupedArray as $name => $group) {
print("$name: ");
print_r($group->all());
}

输出:
Alice: Array
(
[0] => Array
(
[id] => 1
[name] => Alice
)
[1] => Array
(
[id] => 4
[name] => Alice
)
)
Bob: Array
(
[0] => Array
(
[id] => 2
[name] => Bob
)
)
Carol: Array
(
[0] => Array
(
[id] => 3
[name] => Carol
)
)

按多个键分组

您可以使用 `array_multisort()` 函数按多个键对数组进行分组。这有助于创建多级分组或按多个标准筛选数据。以下是一个按 `id` 和 `name` 分组的示例:
$indexedArray = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 1, 'name' => 'Carol'],
['id' => 3, 'name' => 'Dave']
];
array_multisort(
array_column($indexedArray, 'id'),
array_column($indexedArray, 'name')
);
print_r($indexedArray);

输出:
Array
(
[0] => Array
(
[id] => 1
[name] => Alice
)
[1] => Array
(
[id] => 1
[name] => Carol
)
[2] => Array
(
[id] => 2
[name] => Bob
)
[3] => Array
(
[id] => 3
[name] => Dave
)
)

使用闭包分组

使用闭包分组提供了最大的灵活性。它允许您根据自定义条件对数组进行分组。例如,您可以按一个键的值是否偶数对数组进行分组:
$indexedArray = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Carol'],
['id' => 4, 'name' => 'Dave']
];
$groupedArray = array_reduce($indexedArray, function ($carry, $item) {
$key = $item['id'] % 2;
$carry[$key][] = $item;
return $carry;
}, []);
print_r($groupedArray);

输出:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 3
[name] => Carol
)
)
[1] => Array
(
[0] => Array
(
[id] => 1
[name] => Alice
)
[1] => Array
(
[id] => 2
[name] => Bob
)
[2] => Array
(
[id] => 4
[name] => Dave
)
)
)


对 PHP 数组进行分组是一种强大的技术,可帮助您从数据中获取有用见解。通过按键、值、多个键或自定义条件对数组进行分组,您可以组织和分类数据,以更有效地进行分析、过滤和操作。

2024-10-16


上一篇:如何在 PHP 中获取当前年份

下一篇:PHP 字符串截取方法详解