排序数组在顶级PHP上保持均匀值

Dar*_*ric 3 php arrays sorting

我曾尝试排序如下阵列,以保持在顶部,从排序的顺序,甚至价值观asc,以desc

$array = array(1,2,3,4,5,6,7,8,9,10);
Run Code Online (Sandbox Code Playgroud)

我试过这个来排序数组

usort($array, function($a, $b) { 
                    if ($a % 2 == 0 )
                    { 
                        return 1 ;
                    }
                    else 
                    { 
                        return -1;
                    }
            }
        );
Run Code Online (Sandbox Code Playgroud)

我得到了如下的输出

Array
(
    [0] => 7
    [1] => 9
    [2] => 1
    [3] => 5
    [4] => 3
    [5] => 2
    [6] => 4
    [7] => 6
    [8] => 8
    [9] => 10
)
Run Code Online (Sandbox Code Playgroud)

我想要输出数组

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
    [5] => 1
    [6] => 3
    [7] => 5
    [8] => 7
    [9] => 9
)
Run Code Online (Sandbox Code Playgroud)

偶数和奇数值应按asc到desc顺序排序,但将偶数值保持在奇数值之上

Fab*_*ler 6

usort是不是稳定的.文件说明:

如果两个成员比较相等,则它们在排序数组中的相对顺序是未定义的.

那么,你能做的是:

usort($array, function($a, $b) {
                if ($a % 2 == $b % 2) {
                    return intval($a - $b);
                }
                elseif ($a % 2 == 0 )
                { 
                    return -1 ;
                }
                else 
                { 
                    return 1;
                }
        }
    );
Run Code Online (Sandbox Code Playgroud)

如果两者都是偶数或两者都是奇数,则比较实际值.