Home >Backend Development >PHP Tutorial >PHP array grouping by value functions and best practices

PHP array grouping by value functions and best practices

王林
王林Original
2024-05-04 13:30:011076browse

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

PHP array grouping by value functions and best practices

array_group_by function

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.

Example

$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
        )
    )
)

Best Practice

In addition to the array_group_by() function, There are other ways of grouping arrays. Choosing the appropriate method depends on the specific situation.

  • If you need to group by a single key, you can use group_by Auxiliary function:
function group_by(array $array, string $key): array
{
    $result = [];
    foreach ($array as $item) {
        $result[$item[$key]][] = $item;
    }
    return $result;
}
  • If you need to group by multiple keys, you can Use array_reduce() Function:
$grouped_by_type_and_name = array_reduce($fruits, function($result, $item) {
    $result[$item['type']][$item['name']] = $item;
    return $result;
}, []);
  • If you need to group the array by key name, you can use 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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn