Как использовать unset для числовых массивов в PHP

· PHP и Снипеты · 1 мин чтения

Использование unset() функции для числовых массивов является немного проблематичным. Я объясню всю

суть проблемы ниже в примере:

Пример:

<?php
$x = array(5, 6);
unset($x[0]);
var_dump($x);
?>

Результат:

array(1) {
  [1]=>
  int(6)
}

Собственно проблема в том, что мы делаем unset() для $x[0] — это цифра 5, у которой индекс стоит 0, тем самым по логике, когда «5» убирается из массива, 6 должна стать на место 5, но это не так, она так, потому что 6 так и остается с индексом 1 ($x[1]).

Решение

Чтобы решить данную проблему, можно использовать функцию array_splice() , которая выполняет свою работу на ура.

Пример:

<?php
$array = array(0, 1, 2, 3);
array_splice($array, 2, 1);
var_dump($array);

Результат:

array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(3)
}

В данном случае индексация обновляется как это нужно и $array имеет все индексы в порядке возрастания, как нам и нужно. Если ключи (индексация) не имеют значения, то проще использовать unset(), но опять же — на вкус и цвет любителя нет. Все используют функции по разному — кому что нравится.

Приятного пользования!