我有一个这样的数组:
$arr = [456, 8, 1, -9, 'string', true, 0, -65, -162]
我想按降序对数组值进行排序,并且我还希望整数值高于其他值类型,
我试过rsort($arr)
,然后我做了var_dump
但结果是
array (size=9)
0 => int 456
1 => int 8
2 => int 1
3 => string 'string' (length=6)
4 => int -9
5 => boolean true
6 => int 0
7 => int -65
8 => int -162
如何使该数组以高于其他数据类型的整数排序?
示例:
$arr = [456, 8, 1, 0, -9,-65, -162, 'string', true]
您可以将usort
与自定义排序函数一起使用,该函数在比较值之前检查整数:
usort($arr, function ($a, $b) {
if (is_integer($a) && !is_integer($b)) return -1;
elseif (!is_integer($a) && is_integer($b)) return 1;
else return $b <=> $a;
});
var_dump($arr);
输出:
array(9) {
[0]=>
int(456)
[1]=>
int(8)
[2]=>
int(1)
[3]=>
int(0)
[4]=>
int(-9)
[5]=>
int(-65)
[6]=>
int(-162)
[7]=>
string(6) "string"
[8]=>
bool(true)
}
3v4l.org 演示