的順序。如果我有一個關聯數組的結構類似於PHP:保持array_values
(
1 => 'a',
2 => 'b',
0 => 'c'
)
,所有的按鍵都是數字,將array_values
始終保證發生的值按時間順序,將新的數組中,基於在他們以前的鍵'值,即['c', 'a', 'b']
?
如果不是,我該如何做到這一點呢?
的順序。如果我有一個關聯數組的結構類似於PHP:保持array_values
(
1 => 'a',
2 => 'b',
0 => 'c'
)
,所有的按鍵都是數字,將array_values
始終保證發生的值按時間順序,將新的數組中,基於在他們以前的鍵'值,即['c', 'a', 'b']
?
如果不是,我該如何做到這一點呢?
不,array_values()
不會以任何方式重新排序值。它不關心按鍵。
它的有效實施基本上是這樣的:
function array_values_impl(array $array)
{
$newArray = [];
foreach ($array as $item) {
$newArray[] = $item;
}
return $newArray;
}
如果你想使用按鍵陣列進行排序,使用ksort()
。
您可以通過首先使用鍵排序數組並通過array_values函數獲取值來完成。
例如
$array = array(
1 => 'a',
2 => 'b',
0 => 'c'
);
ksort($array);
print_r(array_values($array));
輸出:
Array
(
[0] => c
[1] => a
[2] => b
)
數字鍵指向索引數組,不關聯 – RomanPerekhrest
@RomanPerekhrest不一定。在這種情況下,按鍵是連續的,但如果它們不是,例如1,3和5呢? –