У меня есть цикл, который получает данные из формы:
foreach ($data as $d) {
$id = $dataEntity->getId();
$content = $data['form['.$id.']'];
$dataEntity->setContent($content);
}
У меня есть одна проблема. В случае, если form['.$id.'] действителен, код работает. Но когда это недействительно, я получаю сообщение об ошибке:
Notice: Undefined index: form[5207c07b25]
Поэтому я попытался изменить код следующим образом
foreach ($data as $d) {
$id = $dataEntity->getId();
$formData = "form['.$id.']";
if (isset($formData)){
$content = $formData;
} else {
$content = "";
}
$dataEntity->setContent($content);
}
Но все же я получаю то же сообщение об ошибке.
isset или empty или (condition)?true : false троичное или $foo??$a??$b; нулевое объединение
Почему бы вам не проверить, существует ли объединенный индекс $formData в вашем массиве $data? Данный код только проверяет, существует ли переменная, которую вы определили в строке ранее, что всегда верно;)
Если вы используете PHP7, $formData = $data["form[$id]"] ?? '';
@Qirel Это работает






Вам нужно проверить, существует ли индекс в массиве. Сама строка индекса всегда будет установлена:
foreach ($data as $d) {
$id = $dataEntity->getId();
$formData = "form[".$id."]";
if (isset($data[$formData])){
$content = $data[$formData];
} else {
$content = "";
}
$dataEntity->setContent($content);
}
просто для удовольствия - для одного действия, я бы сказал, что лучше пойти тройным: $content = (isset($data[$formData]) ? $data[$formData] : '');
@treyBake Если вы используете PHP 7, вам следует использовать $content = $data[$formData] ?? ''
Нойс! Не знал об этом..! :D
$formData = isset($data['form[' . $id . ']') ? $данные['форма[' . $идентификатор . ']' : '';