问题描述
对数组进行排序,先对a字段正序排序,但0排到最后,再对b字段逆序排序
实现代码
// 对数组进行排序,先对a字段正序排序,但0排到最后,再对b字段逆序排序
$a1 = array(
array('a' => 1,'b' => 1),
array('a' => 2,'b' => 1),
array('a' => 1,'b' => 2),
array('a' => 0,'b' => 1),
array('a' => 1,'b' => 3),
array('a' => 2,'b' => 2),
array('a' => 0,'b' => 2),
array('a' => 2,'b' => 3)
);
// 对a排序
function my_sort1($a,$b) {
if ($a['a'] == 0) {
return 1;
}
if ($b['a'] == 0) {
return -1;
}
if ($a['a'] > $b['a']) {
return 1;
}
return -1;
}
// 对b排序
function my_sort2($a,$b) {
if ($a['a'] == $b['a']) {
if ($a['b'] < $b['b']) {
return 1;
} elseif ($a['b'] > $b['b']) {
return -1;
}
}
return 0;
}
usort($a1,"my_sort1");
usort2($a1,"my_sort2");
返回结果
php7.2返回结果正常
Array
(
[0] => Array
(
[a] => 1
[b] => 3
)
[1] => Array
(
[a] => 1
[b] => 2
)
[2] => Array
(
[a] => 1
[b] => 1
)
[3] => Array
(
[a] => 2
[b] => 3
)
[4] => Array
(
[a] => 2
[b] => 2
)
[5] => Array
(
[a] => 2
[b] => 1
)
[6] => Array
(
[a] => 0
[b] => 2
)
[7] => Array
(
[a] => 0
[b] => 1
)
)
php5.6返回结果有问题
Array
(
[0] => Array
(
[a] => 0
[b] => 2
)
[1] => Array
(
[a] => 0
[b] => 1
)
[2] => Array
(
[a] => 2
[b] => 3
)
[3] => Array
(
[a] => 2
[b] => 2
)
[4] => Array
(
[a] => 2
[b] => 1
)
[5] => Array
(
[a] => 1
[b] => 3
)
[6] => Array
(
[a] => 1
[b] => 2
)
[7] => Array
(
[a] => 1
[b] => 1
)
)
思考
**查阅了相关信息,函数php7并没有修改usort方法
疑问:是否php7版本对php数组进行了修改
如果有大神知道的,还望不吝赐教!**