Задать вопрос
@UnderDog32

Создание объекта в массиве с условием. Что я делаю не так?

Есть код:

<?
	$arrProgressBuilds = [
	[
	'name' => $arResult[PROPERTIES][per1][NAME],
	],
	[
	'name' => $arResult[PROPERTIES][per2][NAME],
	],
	[
	'name' => $arResult[PROPERTIES][per3][NAME],
	],
	];
	
	$countArrBuilds = count($arrProgressBuilds);
	$countClassBuilds = [
	'2' => '6',
	'4' => '4',
	'6' => '4',
	'8' => '3'
	];
?>


Стоит задача - не объявлять элемент в массиве, если определённая переменная пустая.

Пишу код:

<?
	$arrProgressBuilds = [
	if (!empty($arResult[PROPERTIES][per1][VALUE])) {
		[
		'name' => $arResult[PROPERTIES][per1][NAME],
		],
	}
	if (!empty($arResult[PROPERTIES][per2][VALUE])) {
		[
		'name' => $arResult[PROPERTIES][per2][NAME],
		],
	}
	if (!empty($arResult[PROPERTIES][per3][VALUE])) {
		[
		'name' => $arResult[PROPERTIES][per3][NAME],
		],
	}
	
	$countArrBuilds = count($arrProgressBuilds);
	$countClassBuilds = [
	'2' => '6',
	'4' => '4',
	'6' => '4',
	'8' => '3'
	];
?>

Ничего не работает, PHP бьёт ошибку.

Пожалуйста, подскажите, что я делаю не так?
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
rpsv
@rpsv
делай либо хорошо, либо никак
Условие внутри объявления. Измените на:
$arrProgressBuilds = [];
if (!empty($arResult['PROPERTIES']['per1']['VALUE'])) {
  $arrProgressBuilds[] = [
  'name' => $arResult['PROPERTIES']['per1']['NAME'],
  ];
}
if (!empty($arResult['PROPERTIES']['per2']['VALUE'])) {
  $arrProgressBuilds[] = [
  'name' => $arResult['PROPERTIES']['per2']['NAME'],
  ];
}
if (!empty($arResult['PROPERTIES']['per3']['VALUE'])) {
  $arrProgressBuilds[] = [
  'name' => $arResult['PROPERTIES']['per3']['NAME'],
  ];
}


Учитесь читать ошибки, в них написано что не так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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