按数字和布尔值排序数组[重复]

问题描述 投票:0回答:1

我有一个数组,每个项目都有一个从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 sorting
1个回答
0
投票
<?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] => 
        )

)

参考:https://www.php.net/manual/en/function.usort.php

© www.soinside.com 2019 - 2024. All rights reserved.