2016-04-23 13 views
1

Ich habe ein Programm, mit dem Benutzer einen Vorschlag zu einem Review-Board hinzufügen können. Ich übergab einen Vornamen und eine Vorschlagsnachricht aus einem Formular, speicherte sie in einer Zeichenfolge und speicherte sie in einem indizierten Array. Ich bin sehr neu in PHP.Ein Array mit einem Schlüssel sortieren - PHP

Beispiel der Zeichenfolge:

$text = "UserName:$user<br/>Proposal:$prop"; 

Wenn angezeigt es aussieht:

Username: ""

Vorschlag: ""

Username: ""

Vorschlag: ""

Ich möchte dem Benutzer die Möglichkeit geben, in alphabetischer Reihenfolge nach Benutzernamen zu sortieren:

Das Array wie folgt aussieht:

$arr=array(
0 => UserName:afoo<br/>Proposal:foo foo 
1 => UserName:bfoo<br/>Proposal:foo foo 
2 => UserName:cfoo<br/>Proposal:foo foo) 
:

$arr=array(
0 => UserName:bfoo<br/>Proposal:foo foo 
1 => UserName:afoo<br/>Proposal:foo foo 
2 => UserName:cfoo<br/>Proposal:foo foo) 

Nachdem er von Benutzername Sortierung ich es aussehen soll

+0

Haben Sie versucht, etwas wie "[Wie sortiere ich ein Array in PHP] (http://php.net/manual/en/function.sort.php)" zu googeln? –

+1

Mögliches Duplikat von [Wie sortiere ich ein Array nach einem bestimmten Schlüssel?] (Http://stackoverflow.com/questions/2627677/how-to-sort-an-array-by-some-specific-key) –

+0

Verwenden Sie a mehrdimensionales Array mit Benutzername und zugehörigem Vorschlag. Sortieren Sie die Werte und geben Sie sie in die Zeichenfolge ein ($ text) –

Antwort

0

ich glaube, du für so etwas suchen:

usort($array, function($a, $b) { 

$lines_a = explode("<br/>", $a); 
$lines_b = explode("<br/>", $b); 

return strcmp(str_replace("UserName:", "", $lines_a[0]), str_replace("UserName:", "", $lines_b[0])); 
}); 

Wenn Sie jedoch nach den Werten sortieren, erhalten Sie auch das korrekte Ergebnis (Weil der UserName: string in allen Werten identisch ist und es uns nicht wirklich interessiert, was hinter den Namen steht.

So verwenden Sie einfach diese: sort.

+0

Die Zeichenfolgen, die das Array des Benutzers bilden, haben den Benutzernamen als ersten dynamischen Wert. Eine einfache 'sort()' Funktion wird zum alphabetischen Sortieren dieses Arrays führen. –

+0

In der Tat habe ich übersehen – molbal

+0

Aus irgendeinem Grund die Sortierung und normale Sortierung funktionierte nicht für mich. Benutzernamen, die mit R anfingen, wurden immer noch vor Benutzernamen angezeigt, die mit K anfingen. Die Verwendung von @molbal funktionierte tatsächlich. – Xfact

Verwandte Themen