2016-04-23 108 views
1

我有一個程序,允許用戶將建議添加到評論板。我從一個表單傳入了名字和提議消息,將其存儲到一個字符串中,並將其存儲到一個索引數組中。我對PHP很陌生。字符串的通過鍵排序數組 - PHP

實施例:

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

當顯示它看起來像:

用戶名: 「」

建議: 「」

用戶名: 「」

建議:「」

我想給用戶通過用戶名字母順序進行排序的選項:

數組是這樣的:

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

通過用戶名排序後,我希望它看起來像:

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

你嘗試使用谷歌搜索「[如何在PHP中對數組進行排序](http://php.net/manual/en/function.sort.php)」嗎? –

+1

可能重複的[如何通過某些特定的鍵排序數組?](http://stackoverflow.com/questions/2627677/how-to-sort-an-array-by-some-specific-key) –

+0

使用包含用戶名和相應提議的多維數組。現在對值進行排序,然後將其輸入到字符串中($ text) –

回答

0

我認爲你正在尋找的東西是這樣的:

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])); 
}); 

但是,如果按值排序,它也會給你正確的結果(因爲UserName:字符串在所有值中都是相同的,我們並不在乎名稱後面是什麼。

所以只是使用這個:sort

+0

組成用戶數組的字符串具有用戶名作爲第一個動態值。一個簡單的'sort()'函數可以按字母順序對這個數組進行排序。 –

+0

確實,我忽略了 – molbal

+0

由於某種原因,排序和正常排序對我來說並不適用。以R開頭的用戶名仍然出現在以K開頭的用戶名之前。@molbal的usort實際上已經解決了。 – Xfact