2013-01-18 3 views
3

У меня есть массив с данными и ключом [1, 2, 4, 5].Сбросить индексы до массива 1

$ array = xxxx;

это:

     [array] => Array 
          (
           [1] => Array 
            (
             [test] => fdasdfs24 
            ) 

           [2] => Array 
            (
             [test] => fdasdf23 
            ) 

           [4] => Array 
            (
             [test] => fdasdf4 
            ) 

           [5] => Array 
            (
             [test] => fdasdf34 
            ) 

          ) 

Как я могу сбросить индексы в этом и массив? Я хотел бы получить: [1, 2, 3, 4]

     [array] => Array 
          (
           [1] => Array 
            (
             [test] => fdasdfs24 
            ) 

           [2] => Array 
            (
             [test] => fdasdf23 
            ) 

           [3] => Array 
            (
             [test] => fdasdf4 
            ) 

           [4] => Array 
            (
             [test] => fdasdf34 
            ) 

          ) 

как я могу это сделать? Может быть, для этой функции? Я не хочу делать это на людях - это только пример.

+2

Возможный дубликат [Сбросить индекс массива PHP] (http://stackoverflow.com/questions/7536961/reset-php-array-index) – deceze

+0

Что вы на самом деле пытаетесь сделать здесь? Я считаю, что цель состоит в том, чтобы сбросить ключи, начиная с индекса 1. –

+0

@deceze no его не точного дубликата. Его индекс переустановки массива равен 1 вместо '2'. Это большая разница. –

ответ

6

Как индекс начинается 1 вместо 0, вам нужно использовать функцию range и с помощью array_combine вы получите результирующий массив.

array_combine(range(1,4), array_values($array)); 

Чтобы сделать его более общим, вы можете использовать это,

array_combine(range(1,count($array)), array_values($array)); 
+0

+ для интересного. Хотя ** очень специфический ** к набору данных. –

+0

+ yup новая перспектива – pzirkind

+0

@DainisAbols Я добавил это уже! –

5
$new_array = array_values($old_array); 
+3

Примечание: его индекс начинается с 1. –

+0

+1 для краткости – pzirkind

+0

@JasonMcCreary thats, что мой ответ исправляет! –

2

Один из способов сделать это:

$newArray = array(); 
foreach($oldArray as $val): 
    $newArray[] = $val; //add the value to the new array 
endforeach; 
3

Просто добавьте элемент в начало смене ключей, а затем перенести его.

$array = array_values(array_unshift($array, 'blank')); 
unset($array[0]); 

Я не тестировал его, но должен это сделать.

+0

+ не элегантный, но он работает для запуска индекса в 1. –

Смежные вопросы