代码之家  ›  专栏  ›  技术社区  ›  hsz

PHP的asort不能正常工作?

  •  3
  • hsz  · 技术社区  · 14 年前

    $a = array(
        5   => 35,
        16  => 22,
        7   => 22,
        3   => 22,
        11  => 22,
        9   => 27,
    );
    

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

    $a = array(
        16  => 22,
        7   => 22,
        3   => 22,
        11  => 22,
        9   => 27,
        5   => 35,
    );
    

    所以我的第一个想法是: asort 好吧,是的

    asort($a);
    

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

    $a = array(
        11  => 22,
        3   => 22,
        7   => 22,
        16  => 22,
        9   => 27,
        5   => 35
    );
    

    4 回复  |  直到 14 年前
        1
  •  11
  •   Pekka    14 年前

    PHP manual on Sorting Arrays :

    如果这些排序函数中的任何一个将两个成员计算为相等,则顺序未定义(排序不稳定)。

        2
  •  2
  •   Your Common Sense    14 年前

    “为什么”是另一个问题。

    密钥顺序尚未确定。
    如果你想要某种顺序的钥匙,你应该在练习条件中说明

        3
  •  2
  •   badideas    14 年前

    http://en.wikipedia.org/wiki/Sorting_algorithm#Stability

    简言之,确保已经排序的键的顺序保持不变将耗费计算时间(无论是谁在PHP中设计了这个函数,都认为它不值得)

        4
  •  1
  •   aularon    14 年前

    22 .

    推荐文章