PHP – Twee arrays samenvoegen tot één array (ook Duplicaten verwijderen)

Hallo, ik probeer twee arrays samen te voegen en wil ook dubbele waarden uit de uiteindelijke array verwijderen.

Hier is mijn array 1:

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
)

En dit is mijn array 2:

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
)

Ik gebruik array_mergeom beide arrays samen te voegen tot één array. het geeft zo output

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
)

Ik wil deze dubbele vermeldingen verwijderen of kan ik deze verwijderen voordat ik ze samenvoeg…
Gelieve te helpen..
Bedankt!!!!!!!


Antwoord 1, autoriteit 100%

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

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


Antwoord 2, autoriteit 3%

Zoals reeds vermeld, kan array_unique()worden gebruikt, maar alleen als het om eenvoudige gegevens gaat. De objecten zijn niet zo eenvoudig te hanteren.

Als php de arrays probeert samen te voegen, probeert het de waarden van de arrayleden te vergelijken. Als een lid een object is, kan het zijn waarde niet krijgen en gebruikt het in plaats daarvan de spl-hash. Lees hier meer over spl_object_hash.

Eenvoudig verteld als je twee objecten hebt, instanties van dezelfde klasse en als een van hen geen verwijzing is naar de andere, krijg je uiteindelijk twee objecten, ongeacht de waarde van hun eigenschappen.

Om er zeker van te zijn dat u geen duplicaten heeft binnen de samengevoegde array, moet u de zaak zelf afhandelen.

Als je multidimensionale arrays gaat samenvoegen, overweeg dan om array_merge_recursive( )via array_merge().


Antwoord 3, autoriteit 3%

Het zal twee arrays samenvoegen en duplicaat verwijderen

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

Probeer deze link
link1


Antwoord 4, autoriteit 2%

probeer de array_unique()

. te gebruiken

dit verwijdert dubbele gegevens in de lijst van uw arrays..


Antwoord 5

U kunt deze code gebruiken om het gewenste resultaat te krijgen. Het zal duplicaten verwijderen.

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

Antwoord 6

De beste oplossing hierboven heeft een probleem bij het gebruik van dezelfde associatieve sleutels, array_merge() zal array-elementen samenvoegen wanneer ze dezelfde NIET-NUMMER sleutel hebben, dus het is niet geschikt voor het volgende geval

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

Als u in plaats daarvan uw waarde kunt uitvoeren naar de sleutels van uw arrays (bijv. ->pluck(‘name’, ‘id’)->toArray() in Eloquent), kunt u in plaats daarvan de volgende merge-methode gebruiken

array_keys(array_merge($a1, $a2))

Wat de code eigenlijk doet, is dat het het gedrag van array_merge() gebruikt om dubbele sleutels te verwijderen en je een nieuwe array terug te geven met sleutels als array-elementen, hopelijk helpt het


Antwoord 7

In mijn geval moest ik ->toArray()

array_unique(array_merge($array1->toArray(),$array2->toArray()), SORT_REGULAR);

welke resultaten van het combineren van beide antwoorden


Antwoord 8

Als u twee arrays samenvoegt, wordt het duplicaat niet verwijderd. U kunt het onderstaande voorbeeld proberen om uniek te worden uit twee arrays

$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);

Other episodes