pix*_*e54 5 php multidimensional-array
尝试按升序对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
)
)
Run Code Online (Sandbox Code Playgroud)
小智 15
由于这是在array_multisort vs usort上最显着的Google结果,即使它已经有4年了,我也会回复.
usort()更简洁,不需要提取列数组来提供给array_multisort().(它也比array_multisort少.)
但是,当我今天在20,000和10,000个代表性数据行的阵列上反复测试它时,当列是int类型的随机值并且预先提取列时,usort()比array_multisort()慢7-15倍.这是人们可能期望的,因为对于每个比较,您将整个php函数调用与优化的内部代码进行比较.
使用前一个回复中的匿名函数比传递usort()定义函数的名称提高了30-35%.它从来没有比慢8倍更好,通常比慢10倍慢.通常情况下这无关紧要,但是当你开始计算CPU时间的十分之一秒只是为了排序一个数组时,它可能会.在5.5之前的服务器上提取没有array_column()的列,最好不要将差异减半.
Art*_*cto 10
只是usort:
usort($arr, function (array $a, array $b) { return $a["memnum"] - $b["memnum"]; });
Run Code Online (Sandbox Code Playgroud)
array_multisort用于同时比较来自不同数组(或子数组)的元素.您想比较一个数组的元素,因此您可以使用usort.这些元素本身就是数组的事实是无关紧要的.