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