如果我有一个结构类似于
的关联数组(
1 => 'a',
2 => 'b',
0 => 'c'
)
所有键都是数字的,array_values
总是保证值在新数组中按时间顺序排列,基于它们之前的键值,即['c', 'a', 'b']
?
如果没有,我该怎么做呢?
答案 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
)