Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menggabungkan berbilang tatasusunan PHP sambil mengalih keluar nilai pendua?

Bagaimanakah saya boleh menggabungkan berbilang tatasusunan PHP sambil mengalih keluar nilai pendua?

Barbara Streisand
Barbara Streisandasal
2024-11-13 00:16:01662semak imbas

How can I merge multiple PHP arrays while removing duplicate values?

Menggabung dan Menyahduplikasi Tatasusunan dalam PHP

Apabila bekerja dengan tatasusunan PHP, selalunya perlu untuk menggabungkan berbilang tatasusunan menjadi satu tatasusunan. Walau bagaimanapun, adalah penting untuk mengelakkan nilai pendua dalam tatasusunan akhir.

Menggabungkan Dua Tatasusunan

Untuk menggabungkan dua tatasusunan, anda boleh menggunakan fungsi array_merge():

$array1 = [
    (object) [
        'ID' => 749,
        'post_author' => 1,
        'post_date' => '2012-11-20 06:26:07',
        'post_date_gmt' => '2012-11-20 06:26:07'
    ]
];

$array2 = [
    (object) [
        'ID' => 749,
        'post_author' => 1,
        'post_date' => '2012-11-20 06:26:07',
        'post_date_gmt' => '2012-11-20 06:26:07'
    ]
];

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

$mergedArray akan mengandungi kedua-dua elemen daripada $array1 dan $array2. Walau bagaimanapun, ia juga akan mengandungi objek pendua daripada $array2, yang mungkin tidak diingini.

Mengalih Keluar Pendua

Untuk mengalih keluar pendua, anda boleh menggunakan array_unique() fungsi. Fungsi ini mengambil tatasusunan sebagai hujahnya dan mengembalikan tatasusunan baharu dengan nilai pendua dialih keluar. Anda boleh menggabungkan array_merge() dan array_unique() untuk menggabungkan tatasusunan dan mengalih keluar pendua:

$mergedAndUniquedArray = 
array_unique(array_merge($array1, $array2), SORT_REGULAR);

Bendera SORT_REGULAR memastikan tatasusunan diisih mengikut nilai elemennya sebelum pendua dialih keluar. Ini boleh menjadi penting jika anda ingin mengekalkan susunan tatasusunan asal apabila menggabungkannya.

Anda juga boleh menggunakan gabungan array_map() dan spl_object_hash() untuk mengalih keluar objek pendua daripada tatasusunan:

$removeDuplicatesUsingObjects = function ($object) {
    return spl_object_hash($object);
};

$mergedAndUniquedArray = array_map($removeDuplicatesUsingObjects, 
array_merge($array1, $array2));
$mergedAndUniquedArray = array_unique($mergedAndUniquedArray);

Kaedah ini menggunakan fungsi spl_object_hash() untuk menjana pengecam unik bagi setiap objek, dan kemudian mengalih keluar pendua berdasarkan pengecam ini.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggabungkan berbilang tatasusunan PHP sambil mengalih keluar nilai pendua?. 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