PHP:保留array_values的顺序

If I have an associative array that is structured like

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

where all of the keys are numeric, will array_values ALWAYS guarantee that the values occur chronologically, in the new array, based on their previous keys' values, i.e. ['c', 'a', 'b']?

If not, how can I accomplish this instead?

No, array_values() will not reorder the values in any way. It doesn't care about keys.

Its effective implementation is basically this:

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

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

    return $newArray;
}

If you want to sort the array using the keys, use ksort().

You can accomplish by first sorting the array with keys and getting values by array_values function.

For example

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

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

Output:

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