Привет, у меня есть массив, мне нужно изменить ключи упорядоченным образом, но не изменяйте порядок значений. например
$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' )
Вызовите 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);