@vcherepko

Как удалить элемента из массива Json по ключу?

Приветствую!
файл json:
{"type":"FeatureCollection",
"features":[{"id":1, "properties": {"item": "value"}},{"id":2, "properties": {"item": "value"}},{"id":3, "properties": {"item": "value"}}]}
Функция:
$id = 1;
$file = file_get_contents($_SERVER["DOCUMENT_ROOT"].'/ajax/data.json'); 
	$myArr= json_decode($file,TRUE);        
	foreach ( $myArr["features"]  as $key => $value) {      
  		if (in_array( $id, $value)) {    
  			unset($myArr["features"][$key]); 
  		};
  };
	$json = json_encode($myArr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
	file_put_contents($_SERVER["DOCUMENT_ROOT"].'/ajax/data.json', $json);
	unset($myArr);

На выходе получаю:
{"type":"FeatureCollection",
"features":{"1":{"id":2, "properties": {"item": "value"}},"2":{"id":3, "properties": {"item": "value"}}}}
то бишь, дописывает ключ элемента.
Мне нужно исходная конструкция, но без элемента
{"type":"FeatureCollection",
"features":[{"id":2, "properties": {"item": "value"}},{"id":3, "properties": {"item": "value"}}]}
Подскажите......
Спасибо
  • Вопрос задан
  • 1060 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
PHP не делает различий между списком и нумерованным списком. Массив json же ключи иметь не может. Поэтому в попытке сохранить ключи массива json_encode делает объект с числовыми ключами. Для получения json array необходимо сбросить ключи массива, например:
$myArr["features"] = array_values($myArr["features"]);

перед вызовом json_encode
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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