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)
}