Rumah > pembangunan bahagian belakang > tutorial php > Penjelasan terperinci tentang cara mengumpulkan tatasusunan PHP mengikut pelbagai medan

Penjelasan terperinci tentang cara mengumpulkan tatasusunan PHP mengikut pelbagai medan

WBOY
Lepaskan: 2024-05-04 15:36:01
asal
1214 orang telah melayarinya

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.

PHP 数组按多个字段分组的方法详解

Penjelasan terperinci tentang cara mengumpulkan tatasusunan mengikut berbilang medan dalam PHP

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

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);
Salin selepas log masuk

输出:

[
    'New York' => [
        ['name' => 'John', 'city' => 'New York'],
        ['name' => 'Bob', 'city' => 'New York'],
    ],
    'London' => [
        ['name' => 'Jane', 'city' => 'London'],
    ],
]
Salin selepas log masuk

array_multisort()

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);
Salin selepas log masuk

Output:

[
    ['name' => 'John', 'city' => 'New York', 'age' => 25],
    ['name' => 'Bob', 'city' => 'New York', 'age' => 28],
    ['name' => 'Jane', 'city' => 'London', 'age' => 30],
]
Salin selepas log masuk

array_multisort()

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);
Salin selepas log masuk

Output:

[
    '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]],
]
Salin selepas log masuk
Fungsi tersuai🎜🎜Dalam beberapa kes, anda boleh menentukan fungsi tersuai anda sendiri untuk menyusun tatasusunan. Berikut ialah contoh fungsi tersuai yang mengumpulkan tatasusunan mengikut berbilang medan: 🎜rrreee🎜Output: 🎜rrreee

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan