Классы массивов PHP переупорядочивают

Мой массив выглядит так:

array( 0 => 'val', 2 => 'val', 3 => 'val', 5 => 'val', 7 => 'val' ); 

Как я могу изменить порядок клавиш, чтобы они шли как 0, 1, 2, 3, 4 ?

Использовать array_values :

 $reindexed_array = array_values($old_array); 
 array_splice($old_array, 0, 0); 

Он не будет сортировать массив и не будет создавать второй массив

Используя sort($array);

См. Документацию по PHP здесь .

Я бы рекомендовал sort по array_values поскольку он не будет создавать второй массив. В следующем коде у вас теперь есть два массива, занимающих пространство: $ reindexed_array и $ old_array. Ненужные.

$reindexed_array = array_values($old_array);

 array_splice($jam_array, 0, count($jam_array)); 

Для сортировки массива с отсутствующими промежуточными индексами с подсчетом порядок более безопасен. Таким образом, 0 – это первый индекс и count($jam_array) или sizeof($jam_array) возвращает десятичную позицию массива, а именно последний индекс.