Как получить json без индекса?

$json = '[{"id":"1","name":"Вася"}, {"id":"2","name":"Коля"}, {"id":"3","name":"Федя"},  {"id":"4","name":"Саня"}, {"id":"5","name":"Рома"}]';

$arr = json_decode($json);
foreach($arr as $key => $value){
    if( $value -> id == 3) {
        unset($arr[$key]);
    }
}

$json2 = json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
var_dump($json2);


Получаю:
string(133) "{"0":{"id":"1","name":"Вася"},"1":{"id":"2","name":"Коля"},"3":{"id":"4","name":"Саня"},"4":{"id":"5","name":"Рома"}}"


Как получить:
[{"id":"1","name":"Вася"},{"id":"2","name":"Коля"},{"id":"4","name":"Саня"},{"id":"5","name":"Рома"}]"
  • Вопрос задан
  • 218 просмотров
Решения вопроса 2
olegbarabanov
@olegbarabanov
Программист, фрилансер (ИП)
Согласно документации с php.net:
При кодировании массива в случае, если его индексы не являются последовательными числами от нуля, то все индексы кодируются в строковые ключи для каждой пары индекс-значение.


Поэтому просто добавьте перед json_encode строчку например с
$arr = array_values($arr);
Ответ написан
Комментировать
@neol
$json = '[{"id":"1","name":"Вася"}, {"id":"2","name":"Коля"}, {"id":"3","name":"Федя"},  {"id":"4","name":"Саня"}, {"id":"5","name":"Рома"}]';

$arr = json_decode($json);
foreach($arr as $key => $value){
    if( $value -> id == 3) {
        unset($arr[$key]);
    }
}
$arr = array_values($arr); // <--
$json2 = json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
var_dump($json2);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы