Удалить элемент из массива Json

Я сохранил содержимое массива в виде массива json в базе данных.

Формат: ["1", "2", "3"]

Теперь я получил значение из базы данных и попытался удалить третий элемент «2» из той же структуры.

Мой код для этого

$numbers= json_decode($numbers_db,true); //json decode numbers array got from DB if (($key = array_search(2, $numbers)) !== false) { unset($numbers[$key]); } $numbers_final = json_encode($numbers); 

Теперь я ожидал, что $ numbers_final будет иметь формат: ["1","3"]

Но это привело к {"0":"1","2":"3"}

Проблема в том, что когда вы unset() элемент, индексы сохраняются в целости. В этом случае индекс 1 больше не существует, поэтому массив преобразуется в объект.

Чтобы заставить массив повторно проиндексировать последовательно, вы можете сделать что-то вроде этого:

 $numbers_db = '["1", "2", "3"]'; echo $numbers_db; $numbers= json_decode($numbers_db,true); //json decode numbers ar if (($key = array_search(2, $numbers)) !== false) { unset($numbers[$key]); $numbers = array_values($numbers); } $numbers_final = json_encode($numbers); echo $numbers_final; не $numbers_db = '["1", "2", "3"]'; echo $numbers_db; $numbers= json_decode($numbers_db,true); //json decode numbers ar if (($key = array_search(2, $numbers)) !== false) { unset($numbers[$key]); $numbers = array_values($numbers); } $numbers_final = json_encode($numbers); echo $numbers_final;