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中文網其他相關文章!