Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengumpulan tatasusunan PHP mengikut fungsi nilai dan amalan terbaik

Pengumpulan tatasusunan PHP mengikut fungsi nilai dan amalan terbaik

王林
王林asal
2024-05-04 13:30:01976semak imbas

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

Penghimpunan tatasusunan PHP mengikut fungsi nilai dan amalan terbaik

array_group_by function

PHP 8.0 memperkenalkan fungsi array_group_by() untuk mengumpulkan elemen tatasusunan berdasarkan kekunci atau fungsi panggil balik yang ditentukan. Sintaksnya adalah seperti berikut: 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');
    • $array: tatasusunan untuk dikumpulkan.
    • $key_or_callback: Ekstrak nama kunci tatasusunan atau fungsi panggil balik kunci kumpulan.
  • $preserve_keys: Parameter pilihan, menyatakan sama ada untuk mengekalkan kunci asal. Lalai ialah false.

    🎜Contoh🎜rrreee🎜Output: 🎜rrreee🎜Amalan Terbaik🎜🎜Selain fungsi array_group_by(), terdapat cara lain untuk mengumpulkan tatasusunan. Memilih kaedah yang sesuai bergantung pada situasi tertentu. 🎜
    • Jika anda perlu mengumpulkan dengan satu kekunci, anda boleh menggunakan group_by Fungsi tambahan: 🎜🎜rrreee
      • Jika anda perlu mengumpulkan dengan berbilang kunci, anda boleh menggunakan array_reduce () Fungsi: 🎜🎜rrreee
        • Jika anda perlu mengumpulkan nama kunci tatasusunan, anda boleh menggunakan array_column() Fungsi: 🎜🎜rrreee 🎜Pilih mengikut keperluan projek dan struktur data Kaedah pengumpulan optimum adalah penting. 🎜

Atas ialah kandungan terperinci Pengumpulan tatasusunan PHP mengikut fungsi nilai dan amalan terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn