2016-04-23 78 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