2016-12-02 2 views
1

Guten Tag, ich versuche, die am häufigsten wiederholt innerhalb einer foreach Schleife auf PHP. Jedes Array ist ein Zyklus der Schleife. Ich muss die id und name der am häufigsten wiederholten Artikel, in diesem Beispiel ist Jake.Wie man am meisten wiederholten Artikel auf multidimensionalen Array

Dies ist die Schleife:

foreach ($json[$key]['data'] as $user){ 
     var_dump($user); 
    } 

und der Ausgang ist:

array(2) { 
     ["id"]=> 
     string(4) "7032" 
     ["name"]=> 
     string(4) "Jake" 
    } 
    array(2) { 
     ["id"]=> 
     string(4) "1021" 
     ["name"]=> 
     string(3) "Ana" 
    } 
    array(2) { 
     ["id"]=> 
     string(4) "2058" 
     ["name"]=> 
     string(4) "John" 
    } 
    array(2) { 
     ["id"]=> 
     string(4) "7032" 
     ["name"]=> 
     string(4) "Jake" 
    } 

Ich brauche die Ausgabe zu sein:

$repeated = array(2) { 
     ["id"]=> 
     string(4) "7032" 
     ["name"]=> 
     string(4) "Jake" 
    } 

Vielen Dank im Voraus für Ihre Antworten.

+0

Könnte helfen http://stackoverflow.com/a/9599420/1507546 – smarber

Antwort

0

diesen Schritt versuchen, die Duplikate aus Array zu entfernen,

$repeated = array_map("unserialize", array_unique(array_map("serialize", $repeated))); 
+0

formatieren Sie Ihren Code –

1

Sie müssen nicht hier eine explizite Schleife verwenden: wir Elemente JSON Darstellungen Karte Array

$counts = array_count_values(array_map(function ($user) { 
    ksort($user); 
    return json_encode($user); 
}, $users)); 

arsort($counts); 

$result = json_decode(key($counts), true); 

Grundsätzlich . Dies geschieht mit array_map. Und es ist getan, weil array_count_values nur Strings oder ganze Zahlen zählen kann. Bitte beachten Sie, dass wir vor der Verwendung json_encodeksort verwenden. Dies ist erforderlich, wenn Benutzerdaten gleich sind, aber eine andere Reihenfolge haben.

Dann sortieren wir absteigend konservierende Array-Schlüssel mit arsort.

Schließlich erhalten wir den ersten Schlüssel mit key und dekodieren es erhalten das ursprüngliche Array-Element mit json_decode.

Hier ist working demo.

Verwandte Themen