【发布时间】:2015-02-19 11:59:08
【问题描述】:
我有一个名字数组,我需要对其进行排序
- 姓氏
- 名字
- 英里
我可以使用 usort 按一个字段(即姓氏)排序
usort($name_apha, function($a, $b) {
return $a['ln'] - $b['ln'];
});
但这只能让我走上 1/3 的路。
问题:如何对所有三个字段(ln,fn 他们 mi)进行排序以获得正确的结果?以下是需要排序的数据示例。
array (size=5)
0 =>
array (size=4)
'ID' => int 425
'ln' => string 'Bolware' (length=10)
'fn' => string 'Christian' (length=9)
'mi' => string '' (length=0)
1 =>
array (size=4)
'ID' => int 423
'ln' => string 'Bernstein' (length=9)
'fn' => string 'Bear' (length=5)
'mi' => string 'D.' (length=2)
2 =>
array (size=4)
'ID' => int 419
'ln' => string 'Bellweather' (length=7)
'fn' => string 'Brent' (length=9)
'mi' => string '' (length=0)
3 =>
array (size=4)
'ID' => int 356
'ln' => string 'Bayleaf, III' (length=13)
'fn' => string 'Joe' (length=5)
'mi' => string 'X.' (length=2)
4 =>
array (size=4)
'ID' => int 336
'ln' => string 'Public' (length=6)
'fn' => string 'John' (length=4)
'mi' => string 'Q.' (length=2)
【问题讨论】:
-
它并不完美,但您可以连续排序 3 次,首先是不太重要的字段 (mi),然后是第二个字段 (fn),最后是最重要的字段 (ln)。
-
不知道你为什么在里面有长度?您是否想要第一个字段最重要,然后是第二个等的字典排序(字母顺序)?
-
如果我search Stack Overflow for the title of this post,我会得到很多与您的情况非常相似的结果。你确定他们都没有回答你的问题吗?
-
@Paul Crovella 很高兴知道。从现在开始会做。
标签: php