2017-02-27 53 views
0

的順序。如果我有一個關聯數組的結構類似於PHP:保持array_values

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

,所有的按鍵都是數字,將array_values始終保證發生的值按時間順序,將新的數組中,基於在他們以前的鍵'值,即['c', 'a', 'b']

如果不是,我該如何做到這一點呢?

+0

數字鍵指向索引數組,不關聯 – RomanPerekhrest

+0

@RomanPerekhrest不一定。在這種情況下,按鍵是連續的,但如果它們不是,例如1,3和5呢? –

回答

3

不,array_values()不會以任何方式重新排序值。它不關心按鍵。

它的有效實施基本上是這樣的:

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

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

    return $newArray; 
} 

如果你想使用按鍵陣列進行排序,使用ksort()

1

您可以通過首先使用鍵排序數組並通過array_values函數獲取值來完成。

例如

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

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

輸出:

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