PHP массив заново заполнить ключи - PullRequest
0 голосов
/ 08 ноября 2010

Привет, у меня есть массив, мне нужно изменить ключи, упорядоченно, но не меняйте порядок значений.например,

$a = array (
 0=>'h',
 1=>'blabla',
 2=>'yes'
);

Я использовал

unset($a[1]);

, но мне нужен ключ для перезапуска, вычисляя ключи 0,1,2 ... etccc, поэтому я не получаю:

array(
 0 => 'h',
 2 => 'yes'
)

но должно прийти возвращение:

array(
 0 => 'h',
 1 => 'yes'
)

Ответы [ 3 ]

5 голосов
/ 08 ноября 2010

Вам необходимо применить array_values ​​ к вашему массиву для переиндексации.

$a = array_values($a);

Бонус: если вам также нужно упорядочить свои значения, вы можете использовать sort и он тоже переиндексирует ваш массив.

Примечание. При использовании любого из аргументов array_values ​​или sort вы потеряете все имеющиеся у вас строковые ключи.

3 голосов
/ 08 ноября 2010

Звоните array_values на нем:

$a = array (
 0=>'h',
 1=>'blabla',
 2=>'yes'
);

unset($a[1]);

$a = array_values($a);

var_dump($a); 
/*
array(2) {
  [0]=>
  string(1) "h"
  [1]=>
  string(3) "yes"
}
*/
2 голосов
/ 08 ноября 2010

Вы также можете использовать array_splice () вместо unset (), что автоматически переиндексирует элементы массива:

$a = array (
 0=>'h',
 1=>'blabla',
 2=>'yes'
);

array_splice($a,1,1);

var_dump($a);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...