Не получается сформировать json из php:
<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$mask = array();
if (CModule::IncludeModule("iblock")){
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_*");
$arFilter = Array("IBLOCK_ID"=>14, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
$i = 1;
while($ob = $res->GetNextElement()){
$arProps = $ob->GetProperties();
$arFields = $ob->GetFields();
$ccords = explode(",", $arProps['coords']['VALUE']);
$mask['features'][] = array(
"type" => "Feature",
"id"=>$arFields["ID"],
"geometry" => array (
"type" => "Point",
"coordinates" => [$ccords[1],$ccords[0]]
),
"properties" => array (
"balloonContentHeader" => "<font size=3><b><a target='_blank' href='https://yandex.ru'>Здесь может быть ваша ссылка</a></b></font>",
"balloonContentBody" => "<p>Ваше имя: <input name='login'></p><p><em>Телефон в формате 2xxx-xxx:</em> <input></p><p><input type='submit' value='Отправить'></p>",
"balloonContentFooter" => "<font size=1>Информация предоставлена: </font> <strong>этим балуном</strong>",
"clusterCaption" => "<strong><s>Еще</s> одна</strong> метка",
"hintContent" => "<strong>Текст <s>подсказки</s></strong>"
)
);
$i++;
}
}
echo json_encode($mask,JSON_UNESCAPED_UNICODE);
?>
получаю такой вывод:
{"features":[{"type":"Feature","id":"99","geometry":{"type":"Point","coordinates":["38.063632","54.922348"]},"properties":{"balloonContentHeader":"<font size=3><b><a target='_blank' href='https:\/\/yandex.ru'>Здесь может быть ваша ссылка<\/a><\/b><\/font>","balloonContentBody":"<p>Ваше имя: <input name='login'><\/p><p><em>Телефон в формате 2xxx-xxx:<\/em> <input><\/p><p><input type='submit' value='Отправить'><\/p>","balloonContentFooter":"<font size=1>Информация предоставлена: <\/font> <strong>этим балуном<\/strong>","clusterCaption":"<strong><s>Еще<\/s> одна<\/strong> метка","hintContent":"<strong>Текст <s>подсказки<\/s><\/strong>"}},
А хотелось бы:
{
"type": "FeatureCollection",
"features": [
{"type":"Feature","id":99,"geometry":{"type":"Point","coordinates":[38.063632","54.922348]},"properties":{"balloonContentHeader":"<font size=3><b><a target='_blank' href='https:\/\/yandex.ru'>Здесь может быть ваша ссылка<\/a><\/b><\/font>","balloonContentBody":"<p>Ваше имя: <input name='login'><\/p><p><em>Телефон в формате 2xxx-xxx:<\/em> <input><\/p><p><input type='submit' value='Отправить'><\/p>","balloonContentFooter":"<font size=1>Информация предоставлена: <\/font> <strong>этим балуном<\/strong>","clusterCaption":"<strong><s>Еще<\/s> одна<\/strong> метка","hintContent":"<strong>Текст <s>подсказки<\/s><\/strong>"}}
Подскажите, как записать?
Да, вижу в комментариях вам teran вроде подсказал что и как, я б еще посоветовал все это написать более экономно(производительность)
<?require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$mask = array();
$mask['type'] = 'FeatureCollection'; // добавляем то, чего вам не хватало
if (\CModule::IncludeModule("iblock")) {
$arSelect = Array("ID", "PROPERTY_COORDS"); // в цикле вы ничего больше не используете, это излишки
$arFilter = Array("IBLOCK_ID"=>14, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = \CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
// $i = 1; зачем вам $i ?
// fetch быстрее работает, и в $arSelect мы берем только то, что нам нужно
while($arr = $res->Fetch()){
$ccords = explode(",", $arr['PROPERTY_COORDS_VALUE']);
$mask['features'][] = array(
"type" => "Feature",
"id"=> intval($arr['ID']),
"geometry" => array (
"type" => "Point",
"coordinates" => [floatval($ccords[1]), floatval($ccords[0])]
),
"properties" => array (
"balloonContentHeader" => "<font size=3><b><a target='_blank' href='https://yandex.ru'>Здесь может быть ваша ссылка</a></b></font>",
"balloonContentBody" => "<p>Ваше имя: <input name='login'></p><p><em>Телефон в формате 2xxx-xxx:</em> <input></p><p><input type='submit' value='Отправить'></p>",
"balloonContentFooter" => "<font size=1>Информация предоставлена: </font> <strong>этим балуном</strong>",
"clusterCaption" => "<strong><s>Еще</s> одна</strong> метка",
"hintContent" => "<strong>Текст <s>подсказки</s></strong>"
)
);
// $i++; зачем?
}
}
echo json_encode($mask,JSON_UNESCAPED_UNICODE);
p.s. постарался минимально затронуть наз-я переменных, но желательно тоже использовать смысловую нагрузку в них.
Тут я вам просто советую, как лучше, ни в коем случае не влезаю в ваш код :)
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как отловить параметры Get вида indexphp?do=somethink в Laravel