尝试按升序对memnum下面的数组进行排序,我有点困惑哪个更好用... usort或array_multisort?我在想,因为它是多维的?有人有这方面的例子吗?
Array
(
[0] => Array
(
[memnum] => 3236467423
[mid] => 1104881300
[fname] => JOHN
[lname] => DOE
[add1] => OMITTED
[add2] =>
[city] => CHESTERFIELD
[state] => MI
[zip] => 48051
[age] => 50
)
[1] => Array
(
[memnum] => 3258467922
[mid] => 1105121457
[fname] => JANE
[lname] => DOE
[add1] => OMITTED
[add2] =>
[city] => CHESTERFIELD
[state] => MI
[zip] => 48051
[age] => 50
)
[2] => Array
(
[memnum] => 3237769108
[mid] => 1104489312
[fname] => BOB
[lname] => DOE
[add1] => OMITTED
[add2] =>
[city] => CHESTERFIELD
[state] => MI
[zip] => 48051
[age] => 50
)
)
答案 0 :(得分:15)
由于这是关于array_multisort vs usort的最显着的Google结果,即使它已经4年了,我也会回复。
usort ()更简洁,并且不需要提取列数据以提供给 array_multisort ()。 (它也比array_multisort少。)
但是,当我今天在20,000和10,000个代表性数据行的阵列上反复测试时, usort ()比 array_multisort ()慢了7-15倍是int类型的随机值,并且该列是预先提取的。这是人们可能期望的,因为对于每次比较,您都要将整个php函数调用与优化的内部代码进行比较。
使用上一个回复中的匿名函数比传递 usort ()已定义函数的名称提高了30-35%。它从来没有比慢8倍更好,通常比慢10倍慢。通常这不重要,但是当你开始计算CPU时间的十分之一秒只是为了排序一个阵列时,它可能会。在5.5之前的服务器上提取没有 array_column ()的列,最好不要将差异减半。
答案 1 :(得分:10)
只需usort
:
usort($arr, function (array $a, array $b) { return $a["memnum"] - $b["memnum"]; });
array_multisort
用于同时比较来自不同数组(或子数组)的元素。您想比较一个数组的元素,因此您使用usort
。这些元素本身就是数组这一事实无关紧要。
答案 2 :(得分:0)
作记录(并与usort
解决方案进行比较),
array_multisort
的使用方法如下:
array_multisort(array_column($arr, 'memnum'), $arr);