2017-10-24 1 views
1

Wie kann ich Duplikate aus mehreren Arrays löschen?PHP - Lösche alle Duplikate im Array

pinky und cocos sind doppelt in meinem Array. Alle Wörter, die doppelt sind, müssen entfernt werden. Wenn diese entfernt werden, lege ich diese Wörter in meine Auswahl. Ich bekomme diese Wörter aus meiner Datenbank.

Die Abfrage:

$queryClient = " SELECT DISTINCT `clients` FROM `reps` WHERE `clients` != ''"; 

Dies ist mein Code:

while($row = mysql_fetch_assoc($resultClient)){ 
    $names = explode(",", $row['clients']); 
    echo '<pre>'; print_r($names); echo '</pre>'; 
} 

Ergebnis: (Diese Lebensmittel Worte sind nur ein Beispiel)

Array 
    (
     [0] => chocolate 
    ) 
    Array 
    (
     [0] => vanilla 
     [0] => cocos 
    ) 
    Array 
    (
     [0] => strawberry 
    ) 
    Array 
    (
     [0] => pinky 
     [1] => watermelon 
     [2] => melon 
     [3] => cocos 
    ) 
    Array 
    (
     [0] => pinky 
    ) 
    Array 
    (
     [0] => dark-chocolate 
    ) 

Ich habe versucht, dies in meinem während Schleife, aber es hat nicht funktioniert:

$array = array_unique($names, SORT_REGULAR); 

Wie kann ich alle Duplikate entfernen? Können Sie mir helfen oder haben Sie eine Lösung für mein Problem? Hilfe.

+0

Was ist das gewünschte Ergebnis? –

+0

Ich möchte einen Selektor. Die Optionen dieses Selektors sind Lebensmittel aus meiner Datenbank ** aber ** diese werden nicht doppelt sein – Haffoo

+0

Sorry, bereits getan, ich habe meinen Kommentar gelöscht;) – kerbholz

Antwort

5

Hier ist ein Einzeiler:

print_r(array_unique(call_user_func_array('array_merge', $names))); 

Erste merge alle Sub-Arrays in einem, dann eindeutige Werte erhalten.

Voll Beispiel:

$names = array(); 
while($row = mysql_fetch_assoc($resultClient)){ 
    $names[] = explode(",", $row['clients']); 
} 
print_r(array_unique(call_user_func_array('array_merge', $names))); 
+0

Sir, das geht nicht! Bitte hilf mir! while ($ row = mysql_fetch_assoc ($ resultClient)) { $ name = explodieren (",", $ row ['clients']); Echo '

' . print_r(array_unique(call_user_func_array('array_merge', $names))).'
'; } @u_mulder – Haffoo

+0

Dies sollte __after__ 'while' Schleife erfolgen. –

+0

Ich verstehe dich und das hat funktioniert! aber ... alle mussten ** in ** meinem Select-Tag sein. Ich habe das versucht, aber nicht funktioniert: '. $ Name. ' '; } – Haffoo

1

zuerst müssen Sie Ihre Array beitreten, bevor Sie die Duplikate herauszufiltern:

<?php 
$allNames = []; 
while($row = mysql_fetch_assoc($resultClient)){ 
    $names = explode(",", $row['food']); 
    $allNames[] = $names; 
} 

$allNames = array_merge(...$allNames); //Join everything to a one dimensional array 
$allNames = array_unique($allNames); // Only keep unique elementes 

print_r($allNames); 
+0

Ich habe dein Snippet ausprobiert, ich bekomme nur ein Essenswort? seltsam ist es nicht? – Haffoo

+1

Was ist mit diesem Snippet? Eine *** gute Antwort *** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern auch für zukünftige Besucher von SO. –

Verwandte Themen