PHP:保留array_values的顺序

时间:2017-02-27 21:53:45

标签: php arrays

如果我有一个结构类似于

的关联数组
(
    1 => 'a',
    2 => 'b',
    0 => 'c'
)

所有键都是数字的,array_values总是保证值在新数组中按时间顺序排列,基于它们之前的键值,即['c', 'a', 'b']

如果没有,我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

不,array_values()不会以任何方式对值重新排序。它不关心键。

它的有效实施基本上是这样的:

function array_values_impl(array $array)
{
    $newArray = [];

    foreach ($array as $item) {
        $newArray[] = $item;
    }

    return $newArray;
}

如果要使用键对数组进行排序,请使用ksort()

答案 1 :(得分:3)

您可以通过首先使用键对数组进行排序并通过array_values函数获取值来完成。

例如

 $array = array(
    1 => 'a',
   2 => 'b',
   0 => 'c'
);

ksort($array);
print_r(array_values($array));

输出:

Array
(
    [0] => c
    [1] => a
    [2] => b
)