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

0

Я сохранил содержимое массива в виде массива 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"}

Теги:
arrays

1 ответ

2
Лучший ответ

Проблема заключается в том, что когда вы 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;                 
  • 0
    Ох ... хорошо! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню