2016-12-26 3 views
0

Ich habe dieses Array von einer AJAX-Anfrage:Finden Teilstring innerhalb Array

array (
    [0] => 'lat,[email protected]_1' 
    [1] => 'lat,[email protected]_2' 
    [2] => 'lat,[email protected]_3' 
) 

Das Problem hier ist, ich werde nicht immer ein ‚richtig geordneten‘ Array so, so dass es aussehen kann diese:

array (
    [0] => 'lat,[email protected]_1' 
    [1] => 'lat,[email protected]_2' 
    [2] => 'lat,[email protected]_3' 
    [3] => 'lat,[email protected]_1' 
    [4] => 'lat,[email protected]_3' 
    [5] => 'lat,[email protected]_2' 
) 

ich brauche den letzten Array-Wert von jeweils id_X (derzeit nur 3 ids) zu erhalten:

array (
    [3] => 'lat,[email protected]_1' 
    [4] => 'lat,[email protected]_3' 
    [5] => 'lat,[email protected]_2' 
) 

Wie kann ich den letzten Wert dieses Arrays basierend auf einem Teilstring (id_X) finden?

+0

Benötigen Sie die Indizes '3',' 4' und '5' im Ergebnis? – Barmar

+1

Verwenden Sie 'explode()', um den String auf '@' zu teilen. Erstellen Sie dann ein assoziatives Array, dessen Schlüssel "id_X" sind. Sie erhalten nur einen Eintrag für jede ID_X. – Barmar

+0

@barmar Nein, nur der Wert ist in Ordnung. –

Antwort

1

Führen Sie zuerst eine umgekehrte Sortierung durch, um sicherzustellen, dass die neuesten Werte zuerst analysiert werden. Führen Sie sie dann durch eine Schleife, indem Sie die Teilzeichenfolge abgleichen, um die ID zu erhalten, und fügen Sie die Daten zu einem Array hinzu, wenn der ID-Index noch nicht existiert. Letzte Werte werden zu Ihrem Array hinzugefügt, andere werden vernachlässigt. Etwas wie folgt aus:

rsort($ajaxy); 

$lasts = []; 

foreach($ajaxy as $str) { 
    $id = substr($str, strrpos($str, '@') + 1); 
    if (!isset($lasts[$id])) { 
     $lasts[$id] = $str; 
    } 
} 

var_dump($lasts); 

Wenn Sie eine riesige Auswahl haben, und Sie wissen, die Menge von IDs werden Sie erhalten, können Sie in einem Scheck hinzufügen, um die Schleife zu beenden, wenn alle erforderlichen IDs wurden hinzugefügt, um zu vermeiden, redundante Verarbeitung.

Andernfalls nicht mit der umgekehrten Sortierung stören, und einfach überschreiben vorherige Werte bis zum Ende, aber ich finde dies ein sauberer Ansatz.^_^

+0

Ich kenne die Anzahl der IDs nicht. Ihr Code hat wie erwartet 100% funktioniert. Vielen Dank! –

+0

Ich habe es nicht wirklich getestet, da Ihr Array nicht im kopierfähigen Format war und ich nach Mitternacht faul bin. Jolly gut, es funktioniert wie erwartet, gern geschehen. :) –

+0

Hahaha kein Problem, total gearbeitet. Danke nochmal Markus! –

Verwandte Themen