使用高于其他数据类型的整数对数组值进行排序



我有一个这样的数组:

$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 演示

最新更新