PHP的asort无法正常工作?

hsz*_*hsz 3 php asort

我有一个示例数组:

$a = array(
    5   => 35,
    16  => 22,
    7   => 22,
    3   => 22,
    11  => 22,
    9   => 27,
);
Run Code Online (Sandbox Code Playgroud)

我想按值排序并记住它的键.我预期的结果是:

$a = array(
    16  => 22,
    7   => 22,
    3   => 22,
    11  => 22,
    9   => 27,
    5   => 35,
);
Run Code Online (Sandbox Code Playgroud)

所以我的第一个想法是:asort!好的,我做到了

asort($a);
Run Code Online (Sandbox Code Playgroud)

但不是 - 它不只是移动5 => 35到数组的末尾.它将我的数组更改为:

$a = array(
    11  => 22,
    3   => 22,
    7   => 22,
    16  => 22,
    9   => 27,
    5   => 35
);
Run Code Online (Sandbox Code Playgroud)

你看 ?具有相同值的键是反向排序的.为什么?

Pek*_*ica 10

对于相等的值,您不能指望某个排序顺序.从排序数组PHP手册:

如果这些排序函数中的任何一个将两个成员评估为相等,那么顺序是未定义的(排序不稳定).