Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menggabungkan tatasusunan dua dimensi dalam php tanpa mengubah nilai utama

Bagaimana untuk menggabungkan tatasusunan dua dimensi dalam php tanpa mengubah nilai utama

PHPz
PHPzasal
2023-04-26 09:07:46854semak imbas

Dalam PHP, tatasusunan ialah struktur data yang sangat penting yang boleh digunakan dalam banyak senario. Tatasusunan dua dimensi adalah salah satu daripadanya, biasanya digunakan untuk menyimpan data seperti jadual atau matriks. Dalam pembangunan sebenar, anda mungkin menghadapi situasi di mana anda perlu menggabungkan dua atau lebih tatasusunan dua dimensi ke dalam tatasusunan dua dimensi yang baharu. Walau bagaimanapun, jika anda terus menggunakan fungsi array_merge PHP sendiri untuk bergabung, akan ada masalah: nilai kunci yang digabungkan akan berubah. Jadi, mari kita bincangkan cara menggabungkan tatasusunan dua dimensi tanpa mengubah nilai utama.

Fahami struktur tatasusunan dua dimensi

Dalam PHP, tatasusunan dua dimensi sebenarnya ialah tatasusunan yang mengandungi berbilang tatasusunan satu dimensi. Setiap tatasusunan satu dimensi ialah subarray di mana berbilang pasangan nilai kunci boleh disimpan. Sebagai contoh, berikut ialah tatasusunan dua dimensi yang mengandungi dua sub-tatasusunan:

$array = [
    [
        'name' => 'John',
        'age' => 25,
    ],
    [
        'name' => 'Mary',
        'age' => 30,
    ],
];

Dapat dilihat bahawa setiap sub-tatasusunan mewakili maklumat seseorang, dengan name dan age ialah kunci , sepadan dengan Nilai masing-masing ialah nama dan umur orang itu. Dalam pembangunan sebenar, banyak operasi perlu dilakukan pada data struktur ini, seperti pengisihan, penapisan, penggabungan, dsb. tatasusunan.

Gunakan fungsi array_merge untuk menggabungkan tatasusunan dua dimensi

Dalam PHP, terdapat banyak cara untuk menggabungkan tatasusunan, antaranya menggunakan fungsi array_merge ialah kaedah biasa. Fungsi ini boleh menggabungkan berbilang tatasusunan ke dalam tatasusunan baharu, dan nilai kunci yang digabungkan akan disusun semula secara automatik. Berikut ialah contoh menggunakan fungsi array_merge untuk menggabungkan dua tatasusunan dua dimensi:

$array1 = [
    [
        'name' => 'John',
        'age' => 25,
    ],
];

$array2 = [
    [
        'name' => 'Mary',
        'age' => 30,
    ],
];

$array = array_merge($array1, $array2);

var_dump($array);

Hasil output ialah:

array(2) {
  [0]=>
  array(2) {
    ["name"]=>
    string(4) "John"
    ["age"]=>
    int(25)
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(4) "Mary"
    ["age"]=>
    int(30)
  }
}

Seperti yang anda lihat, gabungan tatasusunan mengikut asal Susunan disusun semula dan nilai kunci ditetapkan semula kerana fungsi array_merge akan menggunakan nilai kunci semua tatasusunan sebagai kunci tatasusunan baharu dan nilai tatasusunan baharu kunci ialah nilai dalam tatasusunan asal. Jika terdapat nilai kunci pendua dalam tatasusunan asal, tatasusunan berikutnya akan menimpa nilai dalam tatasusunan sebelumnya. Tingkah laku ini tidak diingini dalam banyak senario, kerana nilai utama tatasusunan asal mungkin mengandungi maklumat penting, dan menyusun semula atau menulis ganti boleh menyebabkan ralat data. Jadi, adakah terdapat cara untuk mengekalkan nilai utama tatasusunan asal?

Gunakan fungsi array_replace_recursive untuk menggabungkan fungsi dua dimensi

array_replace_recursive ialah kaedah penggabungan tatasusunan lain yang disertakan dengan PHP Tidak seperti fungsi array_merge, ia akan mengekalkan tatasusunan asal. nilai utama dan bukannya menyusun semula atau menulis ganti. Selain itu, fungsi array_replace_recursive juga menyokong penggabungan rekursif tatasusunan, yang boleh mengendalikan penggabungan tatasusunan berbilang dimensi. Berikut ialah contoh menggunakan fungsi array_replace_recursive untuk menggabungkan dua tatasusunan dua dimensi:

$array1 = [
    [
        'name' => 'John',
        'age' => 25,
    ],
];

$array2 = [
    [
        'name' => 'Mary',
        'age' => 30,
    ],
];

$array = array_replace_recursive($array1, $array2);

var_dump($array);

Hasil output ialah:

array(1) {
  [0]=>
  array(2) {
    ["name"]=>
    string(4) "Mary"
    ["age"]=>
    int(30)
  }
}

Seperti yang anda lihat, gabungan tatasusunan mengekalkan kunci dan susunan tatasusunan asal, bukannya menukar susunannya atau menimpa nilainya. Selain itu, fungsi array_replace_recursive juga menyokong penggabungan tatasusunan berbilang dimensi, menjadikan pemprosesan lebih mudah. Walau bagaimanapun, perlu diingatkan bahawa apabila menggabungkan tatasusunan secara rekursif, jika struktur tatasusunan tidak konsisten, hasilnya mungkin tidak normal, jadi perhatian khusus diperlukan.

Ringkasan

Dalam PHP, tatasusunan dua dimensi ialah salah satu daripada struktur data biasa. Dalam pembangunan sebenar, anda mungkin menghadapi situasi di mana anda perlu menggabungkan dua atau lebih tatasusunan dua dimensi ke dalam tatasusunan dua dimensi yang baharu. Jika anda terus menggunakan fungsi array_merge PHP sendiri untuk bergabung, tatasusunan akan disusun semula atau nilai kunci akan ditimpa. Untuk mengekalkan nilai utama dan susunan tatasusunan asal, anda boleh menggunakan fungsi array_replace_recursive untuk menggabungkan tatasusunan. Selain itu, fungsi array_replace_recursive juga menyokong penggabungan rekursif tatasusunan, yang sangat mudah. Walau bagaimanapun, perlu diingatkan bahawa apabila mencantum tatasusunan secara rekursif, perhatian khusus perlu diberikan kepada struktur tatasusunan untuk mengelakkan situasi tidak normal.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan tatasusunan dua dimensi dalam php tanpa mengubah nilai utama. 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