Introduced in PHP 8.0array_group_by()
Function that groups array elements based on a specified key or callback function. The syntax is as follows:
array_group_by(array $array, mixed $key_or_callback, bool $preserve_keys = false): array
$array
: The array to be grouped. $key_or_callback
: Extract the array key name or callback function of the grouping key. $preserve_keys
: Optional parameter, specifying whether to preserve the original keys. Default is false
. $fruits = [ ['name' => 'Apple', 'type' => 'Red'], ['name' => 'Banana', 'type' => 'Yellow'], ['name' => 'Orange', 'type' => 'Orange'], ['name' => 'Mango', 'type' => 'Yellow'], ]; $grouped_by_type = array_group_by($fruits, 'type'); // 输出按类型分组后的数组 print_r($grouped_by_type);
Output:
Array ( [Red] => Array ( [0] => Array ( [name] => Apple [type] => Red ) ) [Yellow] => Array ( [0] => Array ( [name] => Banana [type] => Yellow ) [1] => Array ( [name] => Mango [type] => Yellow ) ) [Orange] => Array ( [0] => Array ( [name] => Orange [type] => Orange ) ) )
In addition to the array_group_by()
function, There are other ways of grouping arrays. Choosing the appropriate method depends on the specific situation.
group_by
Auxiliary function: function group_by(array $array, string $key): array { $result = []; foreach ($array as $item) { $result[$item[$key]][] = $item; } return $result; }
array_reduce()
Function: $grouped_by_type_and_name = array_reduce($fruits, function($result, $item) { $result[$item['type']][$item['name']] = $item; return $result; }, []);
array_column()
Function: $grouped_by_name = array_column($fruits, null, 'name');
It is crucial to choose the best grouping method based on project requirements and data structure.
The above is the detailed content of PHP array grouping by value functions and best practices. For more information, please follow other related articles on the PHP Chinese website!