PHP 数组按值分组的函数和最佳实践
array_group_by 函数
PHP 8.0 引入了 array_group_by()
函数,用于根据指定键或回调函数对数组元素进行分组。其语法如下:
array_group_by(array $array, mixed $key_or_callback, bool $preserve_keys = false): array
登录后复制
$array
:要分组的数组。$key_or_callback
:提取分组键的数组键名或回调函数。$preserve_keys
:可选参数,指定是否保留原始键。默认为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);
登录后复制
输出:
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 ) ) )
登录后复制
最佳实践
除了 array_group_by()
函数之外,还有其他分组数组的方法。选择合适的方法取决于特定情况。
- 如果需要按单个键分组,可以使用
group_by
辅助函数:
function group_by(array $array, string $key): array { $result = []; foreach ($array as $item) { $result[$item[$key]][] = $item; } return $result; }
登录后复制
- 如果需要按多个键分组,可以使用
array_reduce()
函数:
$grouped_by_type_and_name = array_reduce($fruits, function($result, $item) { $result[$item['type']][$item['name']] = $item; return $result; }, []);
登录后复制
- 如果需要对数组按键名分组,可以使用
array_column()
函数:
$grouped_by_name = array_column($fruits, null, 'name');
登录后复制
根据项目需求和数据结构选择最佳分组方法至关重要。
以上就是PHP 数组按值分组的函数和最佳实践的详细内容,更多请关注叮当号网其它相关文章!
文章来自互联网,只做分享使用。发布者:momo,转转请注明出处:https://www.dingdanghao.com/article/437531.html