在使用数组后,字符串键更改为num键?

时间:2014-09-25 09:33:40

标签: php arrays usort

我的PHP代码是:

<?php
    $arr = array(
        'a' => array(
            'name' => 'aaa',
            'pos' => 2
        ),
        'b' => array(
            'name' => 'bbb',
            'pos' => 1
        )
    );
    var_dump($arr);
    function func_sort($a, $b) {
        return intval($a['pos']) - intval($b['pos']);
    }
    usort($arr, 'func_sort');
    var_dump($arr);
?>

结果是:

array(2) {
  ["a"]=>
  array(2) {
    ["name"]=>
    string(3) "aaa"
    ["pos"]=>
    int(2)
  }
  ["b"]=>
  array(2) {
    ["name"]=>
    string(3) "bbb"
    ["pos"]=>
    int(1)
  }
}


array(2) {
  [0]=>
  array(2) {
    ["name"]=>
    string(3) "bbb"
    ["pos"]=>
    int(1)
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(3) "aaa"
    ["pos"]=>
    int(2)
  }
}
usrot之后,字符串键改为num键,谁能告诉我为什么?以及如何对数组进行排序(使用字符串键)但保留字符串键?

1 个答案:

答案 0 :(得分:2)

usort()这样做:这是该函数的记录行为,请参阅文档页面上的第二个Note

如果您需要维护密钥关联,请使用uasort()