Php 排序数组值​;使用高于其他数据类型的整数

Php 排序数组值​;使用高于其他数据类型的整数,php,arrays,sorting,Php,Arrays,Sorting,我有这样一个数组: $arr=[456,8,1,-9,'string',true,0,-65,-162] 我想对数组值进行降序排序,也希望整数值高于其他值类型 我试过使用rsort($arr),然后我做了var\u 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

我有这样一个数组:

$arr=[456,8,1,-9,'string',true,0,-65,-162]

我想对数组值进行降序排序,也希望整数值高于其他值类型

我试过使用
rsort($arr)
,然后我做了
var\u 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)
}