将数组中的所有键增加 1 的最简单解决方案是什么?
前:
$arr[0] = 'a';
$arr[1] = 'b';
$arr[2] = 'c';
后:
$arr[1] = 'a';
$arr[2] = 'b';
$arr[3] = 'c';
您可以使用
$start_zero = array_values($array); /* Re-Indexing Array To Start From Zero */
如果你想从索引 1 开始使用
$start_one = array_combine(range(1, count($array)), array_values($array));
好吧,有一种非常简单的方法可以做到:
$arr = array('a', 'b', 'c');
array_unshift($arr, null);
unset($arr[0]);
print_r($arr);
/*
Array
(
[1] => a
[2] => b
[3] => c
)
*/
当然,仅适用于简单的密集阵列。
这是最简单的(但既是单线又适用于密集和稀疏数组)的方式:
$arr = array_flip(array_map(function($el){ return $el + 1; }, array_flip($arr)));
我不确定你为什么要这样做,但你应该能够循环:
$new_array = array();
foreach($arr as $key => $value){
$new_array[$key+1] = $value;
}
$arr = $new_array;
$count = count($arr);
for($i=$count; $i>0; $i--){
$arr[$i] = $arr[$i-1];
}
unset($arr[0]);
我知道这个问题已经很老了,但我最近遇到了一个类似的问题,并想出了一个很好的单行代码来解决任何类型的数组,使用任意整数作为起始键:
$array = array_combine(array_keys(array_fill($starting_index, count($array), 0)), array_values($array));
$starting_index 是您想要的初始整数键的任何值,例如 3。
这甚至可以与包含复杂对象的数组一起使用,这与使用 array_flip 的解决方案不同,并且不会像其他一些解决方案那样限制您从 0 或 1 开始索引。
我不确定这是否有资格作为一个班轮,但这是一种不同的方式
$result = array_reduce(array_keys($arr),function($carry,$key) use($arr){
$carry[$key+1] = $arr[$key];
return $carry;
},[]);