通过数组键重新排序数组


Re-sorting array via array keys?

我有两个数组,$country$redirect,每个条目对应于它的完全对应项,例如$redirect[1]$country[1]

在整个数组中取消设置值后,我可能会留下,例如,只设置了$var[4]$var[2]的数组。我想从0开始重新分配数组键,这样$var[2]将把它的键重新分配给$var[0], $var[4]重新分配给$var[1]

本质上是sort()函数,但按当前数组键排序,而不是按数组的数字/字符串值排序。

这可能吗?

任何答案或建议将非常感谢;)!

更新:

我试图使用ksort()array_values(),但我不确定它们是否真的是我需要的,因为我计划使用size_of()功能。

我代码:

$var = array(2 => "value_1", 4 => "value_2", 6 => "value_3");
ksort($var);
for($i = 0, $size = sizeof($var); $i < $size; $i++) {
    $var[$i] = "foo";
}
var_dump($var);

的回报:

array(5) { [2]=> string(3) "foo" [4]=> string(7) "value_2" [6]=> string(7) "value_3" [0]=> string(3) "foo" [1]=> string(3) "foo" }

任何关于我如何能得到这个工作的其他想法/答案将非常感激!

使用array_values()(返回"sorted"数组):

$var = array(2 => "value_1", 4 => "value_2", 6 => "value_3");
$var = array_values($var);
for($i = 0, $size = sizeof($var); $i < $size; $i++) {
    $var[$i] = "foo";
}
var_dump($var);