PHP - Menggabungkan dua array menjadi satu array (juga Hapus Duplikat)


109

Hai, Saya Mencoba menggabungkan dua larik dan juga ingin menghapus nilai duplikat dari Array akhir.

Ini Array 1 saya:

Array
    (
    [0] => stdClass Object
    (
    [ID] => 749
    [post_author] => 1
    [post_date] => 2012-11-20 06:26:07
    [post_date_gmt] => 2012-11-20 06:26:07
)

Dan ini array 2 saya:

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

Saya menggunakan array_mergeuntuk menggabungkan kedua larik menjadi satu larik. itu memberikan keluaran seperti ini

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

[1] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

Saya ingin menghapus entri duplikat ini atau dapatkah saya menghapus ini sebelum menggabungkan ... Mohon bantuan .. Terima kasih !!!!!!!


Karena Anda ingin menggabungkan $ array1 [0] dan $ array2 [0] bukan $ array1 dan $ array2. Cobalah untuk menjalankan array_merge pada item pertama dari setiap array
Bgi

array itu dinamis .. jadi tidak akan selalu $ array1 [0] dan $ array2 [0]
Ravi

apakah ada sesuatu yang dapat saya bandingkan ID dari setiap objek di dalam array ???
Ravi

1
Lupakan komentar pertama saya yang tidak akan berfungsi karena apa yang Anda coba gabungkan bukanlah array tetapi objek. Anda harus melakukannya secara manual
Bgi

Jawaban:


235
array_unique(array_merge($array1,$array2), SORT_REGULAR);

http://se2.php.net/manual/en/function.array-unique.php


5
@ Hemantxp> tanpa SORT_REGULAR itu memberikan kesalahan ini:Catchable fatal error: Object of class stdClass could not be converted to string
Ravi

4
Perlu dicatat bahwa array_unique mengembalikan array yang difilter (daripada bertindak langsung pada parameter array yang diteruskan) sehingga Anda perlu menyimpan hasilnya sebelum Anda dapat menggunakannya
Mike

7
Secara default array_unique mencoba menggunakan nilai array sebagai string. Oleh karena itu kesalahan @Ravi terjadi. Jika array Anda hanya berupa string, maka Anda tidak memerlukan argumen ketiga. Jika ini bukan string, atau konten tidak dapat secara implisit ditransmisikan ke string, Anda memerlukan argumen SORT_REGULAR.
David Baucum

@ Hemantwagh07 Untuk objek array, jika kita tidak menggunakannya, SORT_REGULARmaka akan diberikanRecoverable fatal error: Object of class stdClass could not be converted to string in...<path to file>
mapmalith

7

Ini akan menggabungkan dua array dan menghapus duplikat

<?php
 $first = 'your first array';
 $second = 'your second array';
 $result = array_merge($first,$second);
 print_r($result);
 $result1= array_unique($result);
 print_r($result1);
 ?>

Coba link ini link1


7

Seperti yang telah disebutkan, array_unique () dapat digunakan, tetapi hanya ketika menangani data sederhana. Objeknya tidak begitu mudah untuk ditangani.

Ketika php mencoba untuk menggabungkan array, ia mencoba untuk membandingkan nilai dari anggota array. Jika anggota adalah sebuah objek, ia tidak bisa mendapatkan nilainya dan menggunakan hash spl sebagai gantinya. Baca lebih lanjut tentang spl_object_hash di sini.

Cukup diberi tahu jika Anda memiliki dua objek, instance dari kelas yang sama dan jika salah satunya bukan referensi ke yang lain - Anda akan memiliki dua objek, berapa pun nilai propertinya.

Untuk memastikan bahwa Anda tidak memiliki duplikat dalam array yang digabungkan, Anda harus menangani kasus ini sendiri.

Juga jika Anda akan menggabungkan array multidimensi, pertimbangkan untuk menggunakan array_merge_recursive () di atas array_merge () .


4

coba gunakan array_unique()

ini menghilangkan data duplikat di dalam daftar array Anda ..


0

Menggabungkan dua larik tidak akan menghapus duplikat Anda dapat mencoba contoh di bawah ini untuk mendapatkan keunikan dari dua larik

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_diff($a1,$a2);
print_r($result);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.