Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menggabungkan Dua Tatasusunan 2D Dengan Cekap Berdasarkan Nilai Lajur Dikongsi dalam PHP?

Bagaimana untuk Menggabungkan Dua Tatasusunan 2D Dengan Cekap Berdasarkan Nilai Lajur Dikongsi dalam PHP?

DDD
DDDasal
2024-12-16 07:31:15513semak imbas

How to Efficiently Merge Two 2D Arrays Based on a Shared Column Value in PHP?

Menggabungkan Tatasusunan 2D Berdasarkan Nilai Lajur Dikongsi

Untuk tatasusunan 2D yang diberikan:

$array1 = [
    ['rank' => '579', 'id' => '1'],
    ['rank' => '251', 'id' => '2'],
];

$array2 = [
    ['size' => 'S', 'status' => 'A', 'id' => '1'],
    ['size' => 'L', 'status' => 'A', 'id' => '2'],
];

Menggabungkan Menggunakan Native PHP Array Fungsi

Untuk menggabungkan tatasusunan berdasarkan lajur 'id' yang dikongsi, anda boleh memanfaatkan fungsi array_merge_recursive(). Ia menggabungkan elemen secara rekursif daripada tatasusunan input sambil mengekalkan kekunci:

$merged = array_merge_recursive($array1, $array2);

print_r($merged);
// Output:
// Array
// (
//     [0] => Array
//         (
//             [rank] => 579
//             [id] => 1
//             [size] => S
//             [status] => A
//         )
//     [1] => Array
//         (
//             [rank] => 251
//             [id] => 2
//             [size] => L
//             [status] => A
//         )
// )

Fungsi Penggabungan Tersuai

Sebagai alternatif, anda boleh menentukan fungsi anda sendiri untuk menggabungkan tatasusunan berdasarkan kunci yang ditentukan:

function my_array_merge($array1, $array2, $key)
{
    $result = [];
    foreach ($array1 as $item) {
        $result[$item[$key]] = array_merge($item, $array2[$item[$key]]);
    }
    return $result;
}

$merged = my_array_merge($array1, $array2, 'id');

print_r($merged);
// Output:
// Array
// (
//     [1] => Array
//         (
//             [rank] => 579
//             [id] => 1
//             [size] => S
//             [status] => A
//         )
//     [2] => Array
//         (
//             [rank] => 251
//             [id] => 2
//             [size] => L
//             [status] => A
//         )
// )

Pertimbangkan untuk menggunakan my_array_merge() apabila bekerja dengan tatasusunan besar kerana ia berpotensi mengatasi array_merge_recursive().

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Dua Tatasusunan 2D Dengan Cekap Berdasarkan Nilai Lajur Dikongsi dalam PHP?. 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