我有一个数组,每个项目都有一个从1到10的数字,并且每个项目都有布尔值。
我想对它进行排序,所以每个带有布尔值的项都在数组的第一部分,但也应该按数字排序
示例。这是简化的初始数组
Item1: Number 3, Boolean false
Item2: Number 8, Boolean true
Item3: Number 4, Boolean false
Item4: Number 2, Boolean true
此数组应如下所示
Item2: Number 8, Boolean true
Item4: Number 2, Boolean true
Item3: Number 4, Boolean false
Item1: Number 3, Boolean false
我已经有了此功能
$refarr = array_sort($refarr, 'refweights', SORT_DESC);
这样排序数组
Item2: Number 8, Boolean true
Item3: Number 4, Boolean false
Item1: Number 3, Boolean false
Item3: Number 2, Boolean true
除了将初始数组分为两个数组(布尔值True和false),按数字排序并将它们重新组合在一起以外,还有什么其他方法可以存档i?
<?php
$arr = array(
array(2, false),
array(2, true),
array(3, false),
array(8, true),
array(4, false),
);
usort($arr, function ($a, $b){
if ($a[0] === $b[0]) {
return 0;
}
return ($a[0] < $b[0]) ? 1 : -1;
});
usort($arr, function ($a, $b){
if ($a[1] === $b[1]) {
return 0;
}
return ($a[1] < $b[1]) ? 1 : -1;
});
print_r($arr);
输出:
Array
(
[0] => Array
(
[0] => 8
[1] => 1
)
[1] => Array
(
[0] => 2
[1] => 1
)
[2] => Array
(
[0] => 4
[1] =>
)
[3] => Array
(
[0] => 3
[1] =>
)
[4] => Array
(
[0] => 2
[1] =>
)
)