php 数组按值分组的函数和最佳实践

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 数组按值分组的函数以及最好现实的具体形式,更多请存眷萤水红IT仄台另外相闭文章!

点赞(29) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部