Добавление координат в строку .json

287
01 марта 2017, 22:38

Здравствуйте!

Строка .json:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": 1,
      "options": {"strokeWidth": 3},
      "properties": {"balloonContent": "Содержимое балуна", "hintContent": "Текст подсказки"},
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [
            55.80899899270488,
            37.77442932128906
          ],
          [
            55.800895029938275,
            37.74696350097656
          ],
          [
            55.795877445664104,
            37.709197998046875
          ]
        ]
      }
    }
  ]
}

Пользователь вводит координаты в поле, например: [[00.0000, 00.0000], [11.0000, 11.0000], [22.0000. 22,0000]]

Далее код php:

<?php
  $json = file_get_contents('data.json');
  $data = json_decode($json, true);
  $coordinates = $_POST['coordinates'];
  $arr['geometry']['coordinates'] = $coordinates;
  array_push($data['features'], $arr);
  $json = json_encode($data, JSON_UNESCAPED_UNICODE);
  file_put_contents('data.json', $json);
?>

После этого запись в .json выглядит так:

    "coordinates": "[
      [
        55.80899899270488,
        37.77442932128906
      ],
      [
        55.800895029938275,
        37.74696350097656
      ],
      [
        55.795877445664104,
        37.709197998046875
      ]
    ]"

А нужно, чтобы было так (без кавычек):

    "coordinates": [
      [
        55.80899899270488,
        37.77442932128906
      ],
      [
        55.800895029938275,
        37.74696350097656
      ],
      [
        55.795877445664104,
        37.709197998046875
      ]
    ]

Подскажите, пожалуйста, в чем ошибка? Как исправить? Спасибо.

Answer 1
$coordinates = json_decode ($_POST['coordinates'], true);

Или нужно сделать более сложный набор input-ов через html. Или через JS input сохранять в hidden поля. Атрибут name для полей в этом случае будет выглядеть как-то так:

  • coordinates[0][]
  • coordinates[0][]
  • coordinates[1][]
  • coordinates[1][]
  • coordinates[2][]
  • coordinates[2][]
READ ALSO
PHPUnit. Протестировать ветку кода, которая зависит от настроек php.ini, неизменяемых в runtime

PHPUnit. Протестировать ветку кода, которая зависит от настроек php.ini, неизменяемых в runtime

На некоторых "не_очень_хороших" хостингах любят безальтернативно отключать некоторые функции через phpini

241
json_encode возвращает объект вместо массива

json_encode возвращает объект вместо массива

Если я удаляю из массива с целочисленными индексами элемент, а затем применяю к нему функцию json_encode то получаю строку с JavaScript объектом вместо...

267
Не приходят ообщения из формы обратной связи

Не приходят ообщения из формы обратной связи

PHP не знаю, к сожалениюПытаюсь прикрутить к сайту готовую форму, код которой нашла в сети

252