У меня есть некоторые проблемы с массивом. У меня есть один массив, который я хочу изменить, как показано ниже. Я хочу удалить элемент (элементы) по индексу, а затем переиндексировать массив. Является ли это возможным?
$foo = array(
'whatever', // [0]
'foo', // [1]
'bar' // [2]
);
$foo2 = array(
'foo', // [0], before [1]
'bar' // [1], before [2]
);
unset($foo[0], $foo[3], $bar[1]);
array_splice
, и он не работал для 0-го и 1-го индексов.http://php.net/manual/en/function.array-splice.php
источник
Тебе лучше использовать
array_shift()
. Это вернет первый элемент массива, удалит его из массива и переиндексирует массив. Все в одном эффективном методе.источник
array_pop()
будет извлекать и удалять последний элемент массива, если вам это нужно. Но ни одна из этих функций не может воздействовать на элемент в середине массива.источник
Я не знаю, почему за это проголосовали, но если кто-то попытался попробовать, вы заметите, что это работает. Использование сортировки в массиве переназначает ключи массива. Единственный недостаток - это сортировка значений. Поскольку ключи, очевидно, будут переназначены, даже при
array_values
этом, не имеет значения, сортируются значения или нет.источник
Попробуйте с:
источник
В дополнение к ответу xzyfer
Функция
использование
результат
источник
Если вы используете
array_merge
, это будет переиндексировать ключи. В руководстве говорится:http://php.net/manual/en/function.array-merge.php
Вот где я нашел оригинальный ответ.
http://board.phpbuilder.com/showthread.php?10299961-Reset-index-on-array-after-unset ()
источник