Где ошибка в коде при записи в переменную?

Добрый день

подскажите где ошибка?

пытаюсь вот че сделать

if($_POST['generate_xml']) {

$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM",);
$arFilter = Array("IBLOCK_ID"=>11, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);

	$site = 'http://';
	$data = date('Y-m-d');
	$dir = $_SERVER['DOCUMENT_ROOT'].'/scheme/geoObjects2.geojson';

	$data_for_write ='
	{
		"type": "FeatureCollection",
		"metadata": {
			"name": "Карта торгового центра",
			"creator": "SWP",
			"description": ""
		},
	'.
		while($ob = $res->GetNextElement()){
			$arFields = $ob->GetFields();
			$arProps = $ob->GetProperties();
	.'
			"features": [{
				"type": "Feature",
				"id": "'.echo $arFields['ID'].'",
				"geometry": {
					"type": "Polygon",
					"coordinates": "'.echo $arProps['PROPERTIES']['COORDINATES']['VALUE'].'"
				},
				"properties": {
					"description": "'.echo $arFields['NAME'].'",
					"fill": "#ff931e",
					"fill-opacity": 0.3,
					"stroke": "#e6761b",
					"stroke-width": "2",
					"stroke-opacity": 0.9
				}
			}]
	} 
		'.}.'
	';

	$write = file_put_contents( $dir , $data_for_write );
	if($write) { $info = "Запись прошла";} else {$info = "Запись не прошла";}
	echo $info;
}


ошибка точно в куске кода

$data_for_write ='
	{
		"type": "FeatureCollection",
		"metadata": {
			"name": "Карта торгового центра",
			"creator": "Паблито SWP",
			"description": "Сквозь бесонные ночи была сделана эта карта. Пожалуйста не сломайте её!"
		},
	'.
		while($ob = $res->GetNextElement()){
			$arFields = $ob->GetFields();
			$arProps = $ob->GetProperties();
	.'
			"features": [{
				"type": "Feature",
				"id": "'.echo $arFields['ID'].'",
				"geometry": {
					"type": "Polygon",
					"coordinates": "'.echo $arProps['PROPERTIES']['COORDINATES']['VALUE'].'"
				},
				"properties": {
					"description": "'.echo $arFields['NAME'].'",
					"fill": "#ff931e",
					"fill-opacity": 0.3,
					"stroke": "#e6761b",
					"stroke-width": "2",
					"stroke-opacity": 0.9
				}
			}]
	} 
		'.}.'
	';
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ошибка, как обычно, в ДНК. Шутка.

Запомни на всю жизнь:
JSON НИКОГДА, ни под каким видом не пишется руками
Напечатай это большими буквами и повесь себе на монитор.

Чтобы получить JSON, в РНР делаешь массив, который потом выводишь с помощью json_encode
Ответ написан
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
Вы получаете данные из инфоблока, вам нужно это в виде json отправить куда то кому то, но у вас синтаксические ошибки при формировании json.
Вам нужно использовать валидатор для проверки
Очень помогает выявлять лишние или отсутствующие символы, результат сравнивать с примерами из документации.

Это совсем некрасиво:
spoiler
$data_for_write ='
  {
    "type": "FeatureCollection",
    "metadata": {
      "name": "Карта торгового центра",
      "creator": "SWP",
      "description": ""
    },
  '.
    while($ob = $res->GetNextElement()){
      $arFields = $ob->GetFields();
      $arProps = $ob->GetProperties();
  .'
      "features": [{

Сначала соберите всё в массив:
Пример
spoiler
$data = array('items' =>array(
array(
'description' => $description, 
'category_id' => $category_id, 
'name' => 'Карта торгового центра',
'offer_id' => $offer_id,
'price' => $price,
'old_price' => $old_price,
Ответ написан
Ваш ответ на вопрос

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

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