![](/img/trans.png)
[英]Sorting a Multidimensional array by day using usort not working in PHP
[英]PHP Sorting Array Using usort() Not Working
我有这个数组:
Array
(
[0] => Array
(
[timestamp] => lm81-1527799632244
[robo] => C4
[price] => 53.83600000
)
[1] => Array
(
[timestamp] => lm81-1527799632244
[robo] => RE
[price] => 53.83600000
)
[2] => Array
(
[timestamp] => lm81-1527799632244
[robo] => C4
[price] => 0.09188900
)
[3] => Array
(
[timestamp] => lm81-1527799632244
[robo] => RE
[price] => 0.09188900
)
[4] => Array
(
[timestamp] => lm81-1527799632244
[robo] => C4
[price] => 584.80000000
)
)
我期望这样的结果(按robo DESC排序):
Array
(
[0] => Array
(
[timestamp] => lm81-1527799632244
[robo] => RE
[price] => 53.83600000
)
[1] => Array
(
[timestamp] => lm81-1527799632244
[robo] => RE
[price] => 0.09188900
)
[2] => Array
(
[timestamp] => lm81-1527799632244
[robo] => C4
[price] => 53.83600000
)
[3] => Array
(
[timestamp] => lm81-1527799632244
[robo] => C4
[price] => 0.09188900
)
[4] => Array
(
[timestamp] => lm81-1527799632244
[robo] => C4
[price] => 584.80000000
)
)
我已经做到了:
usort($dc_array_process, function($a, $b) {
return $a['robo'] - $b['robo'];
});
但是我的数组仍然没有按DESC顺序排列。 知道我做错了什么吗?
如果要对string
值进行排序,则应使用strcmp
usort($dc_array_process, function($a, $b) {
return strcmp($a['robo'], $b['robo']);
});
要么
usort($dc_array_process, function($a, $b) {
return -strcmp($a['robo'], $b['robo']); //negative to reverse
});
文献:
int strcmp(字符串$ str1,字符串$ str2)
如果str1小于str2,则返回<0;否则,返回0。 如果str1大于str2,则> 0;如果相等,则> 0。
因为算术-
导致将值转换为int 。
usort($dc_array_process, function($a, $b) {
return strcmp($a['robo'], $b['robo']);
});
根据手册 ,传递给usort的比较函数必须…
返回小于,等于或大于零的整数
…以便正确确定订单。 由于您尝试排序的值是字符串,因此您正在使用的减号操作将无效。
尝试在返回中使用strcmp…
return strcmp( $a['robo'], $b['robo'] );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.