Заново заполнять ключи php

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

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

Solutions Collecting From Web of "Заново заполнять ключи php"

Вызовите 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" } */ с $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" } */ 

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

 $a = array_values($a); 

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

Примечание. Используя любое из значений массива или сортировку, вы потеряете любые строковые ключи, которые у вас могут быть.

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

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