我正在研究usort
函数,现在我有这样的数组
$data = array(
array('rank'=>8,'suit'=>0),
array('rank'=>7,'suit'=>3),
array('rank'=>8,'suit'=>2),
);
当我使用usort
函数时,如下
usort($data function($a, $b) {
return $a['rank'] - $b['rank'];
});
而且我得到以下结果:
$data = array(
array('rank'=>7,'suit'=>3),
array('rank'=>8,'suit'=>0),
array('rank'=>8,'suit'=>2),
);
但我想要以下结果:
$data = array(
array('rank'=>7,'suit'=>3),
array('rank'=>8,'suit'=>2),
array('rank'=>8,'suit'=>0),
);
我想首先按等级升序,如果等级具有相同的值,那么我想按西装降序,有人可以帮我如何用usort
功能达到这个结果?
仍在使用usort()
,这将排序rank
中升序顺序suit
在递减顺序:
usort($data, function($a, $b) {
if ($a['rank'] == $b['rank']) {
if ($a['suit'] == $b['suit']) {
return 0;
}
return $a['suit'] > $b['suit'] ? -1 : 1;
}
return $a['rank'] < $b['rank'] ? -1 : 1;
});
我通过使用PHP 7的飞船运算符多次执行了此逻辑。
这是使用此运算符对rank
键进行排序的相同解决方案:
usort($data, function($a, $b) {
if ($a['rank'] == $b['rank']) {
if ($a['suit'] == $b['suit']) {
return 0;
}
return $a['suit'] > $b['suit'] ? -1 : 1;
}
return $a['rank'] <=> $b['rank'];
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句