Подтвердить что ты не робот

Как увеличить на 1 все ключи в массиве?

Какое самое простое решение для увеличения на 1 все ключи в массиве?

ДО:

$arr[0] = 'a';
$arr[1] = 'b';
$arr[2] = 'c';

ПОСЛЕ:

$arr[1] = 'a';
$arr[2] = 'b';
$arr[3] = 'c';
4b9b3361

Ответ 1

Вы можете использовать

$start_zero = array_values($array); /* Re-Indexing Array To Start From Zero */

И если вы хотите запустить его из индекса 1, используйте

$start_one = array_combine(range(1, count($array)), array_values($array));

Ответ 2

Ну, там очень простой способ сделать это:

$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)));

Ответ 3

Я не уверен, почему вы хотите это сделать, но вы должны просто пропустить:

$new_array = array();
foreach($arr as $key => $value){
   $new_array[$key+1] = $value;
}
$arr = $new_array;

Ответ 4

$count = count($arr);
for($i=$count; $i>0; $i--){
    $arr[$i] = $arr[$i-1];
}
unset($arr[0]);

Ответ 5

Я знаю, что этот вопрос довольно старый, но недавно я столкнулся с подобной проблемой и придумал хороший однострочный файл для его решения для любого типа массива с использованием произвольного целого в качестве стартового ключа:

$array = array_combine(array_keys(array_fill($starting_index, count($array), 0)), array_values($array));

$start_index - это любое значение, которое вы хотите для начального целочисленного ключа, например. 3.

Это может быть даже использовано с массивами, содержащими сложные объекты, в отличие от решения с использованием array_flip и не ограничивает вас началом индекса в 0 или 1, как некоторые из других решений.

Ответ 6

Я не уверен, что это соответствует как один лайнер, но это другой способ сделать это

$result = array_reduce(array_keys($arr),function($carry,$key) use($arr){
     $carry[$key+1] = $arr[$key]; 
     return $carry;
},[]);