首頁 >後端開發 >php教程 >PHP 數組按值分組的函數和最佳實踐

PHP 數組按值分組的函數和最佳實踐

王林
王林原創
2024-05-04 13:30:011075瀏覽

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 數組按值分組的函數和最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn