Bagaimana untuk mengumpulkan tatasusunan PHP mengikut berbilang medan? array_column(): Himpunkan mengikut medan yang ditentukan dan ekstrak nilai medan sebagai kunci. array_multisort(): Isih tatasusunan mengikut berbilang medan, kumpulkan baris pendua bersebelahan. Fungsi tersuai: Tentukan fungsi tersuai dan gunakan gelung untuk mengumpulkan tatasusunan mengikut medan yang ditentukan.
Mengumpul tatasusunan ialah operasi biasa untuk memproses set data yang kompleks. Selalunya, anda perlu mengumpulkan elemen tatasusunan berdasarkan satu atau lebih medan untuk memudahkan pemprosesan atau pengagregatan data. PHP menyediakan beberapa cara untuk mencapai ini. Fungsi
array_column()
digunakan untuk mengekstrak nilai lajur tertentu daripada tatasusunan. Ia boleh digunakan untuk menyusun tatasusunan dengan mengekstrak nilai medan yang digunakan untuk mengumpulkan dan menggunakannya sebagai kunci. array_column()
函数用于从数组中提取特定列的值。它可以用来对数组进行分组,方法是提取用于分组的字段值并将其作为键。
$data = [ ['name' => 'John', 'city' => 'New York'], ['name' => 'Jane', 'city' => 'London'], ['name' => 'Bob', 'city' => 'New York'], ]; // 按城市分组 $grouped = array_column($data, 'city'); // 输出结果 print_r($grouped);
输出:
[ 'New York' => [ ['name' => 'John', 'city' => 'New York'], ['name' => 'Bob', 'city' => 'New York'], ], 'London' => [ ['name' => 'Jane', 'city' => 'London'], ], ]
array_multisort()
$data = [ ['name' => 'John', 'city' => 'New York', 'age' => 25], ['name' => 'Jane', 'city' => 'London', 'age' => 30], ['name' => 'Bob', 'city' => 'New York', 'age' => 28], ]; // 按城市和年龄分组 array_multisort(array_column($data, 'city'), SORT_ASC, array_column($data, 'age'), SORT_ASC, $data); // 输出结果 print_r($data);
[ ['name' => 'John', 'city' => 'New York', 'age' => 25], ['name' => 'Bob', 'city' => 'New York', 'age' => 28], ['name' => 'Jane', 'city' => 'London', 'age' => 30], ]
array_multisort()
Fungsi ini digunakan untuk mengisih tatasusunan mengikut berbilang medan. Ia juga boleh digunakan untuk mengumpulkan tatasusunan dengan mengisih tatasusunan mengikut berbilang medan dan kemudian mengumpulkan baris pendua bersebelahan. function group_by_fields(array $data, array $fields) { $grouped = []; foreach ($data as $row) { $key = ''; foreach ($fields as $field) { $key .= $row[$field] . ','; } $key = trim($key, ','); $grouped[$key][] = $row; } return $grouped; } $data = [ ['name' => 'John', 'city' => 'New York', 'age' => 25], ['name' => 'Jane', 'city' => 'London', 'age' => 30], ['name' => 'Bob', 'city' => 'New York', 'age' => 28], ]; // 按城市和年龄分组 $grouped = group_by_fields($data, ['city', 'age']); // 输出结果 print_r($grouped);
[ 'New York,25' => [['name' => 'John', 'city' => 'New York', 'age' => 25]], 'New York,28' => [['name' => 'Bob', 'city' => 'New York', 'age' => 28]], 'London,30' => [['name' => 'Jane', 'city' => 'London', 'age' => 30]], ]
Atas ialah kandungan terperinci Penjelasan terperinci tentang cara mengumpulkan tatasusunan PHP mengikut pelbagai medan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!