Как я могу проверить, определен ли индекс?

У меня есть цикл, который получает данные из формы:

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);
 }

Но все же я получаю то же сообщение об ошибке.

$formData = isset($data['form[' . $id . ']') ? $данные['форма[' . $идентификатор . ']' : '';

Eakethet 22.03.2019 12:04
isset или empty или (condition)?true : false троичное или $foo??$a??$b; нулевое объединение
ArtisticPhoenix 22.03.2019 12:06

Почему бы вам не проверить, существует ли объединенный индекс $formData в вашем массиве $data? Данный код только проверяет, существует ли переменная, которую вы определили в строке ранее, что всегда верно;)

Nico Haase 22.03.2019 12:06

Если вы используете PHP7, $formData = $data["form[$id]"] ?? '';

Qirel 22.03.2019 12:08

@Qirel Это работает

peace_love 22.03.2019 12:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
471
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно проверить, существует ли индекс в массиве. Сама строка индекса всегда будет установлена:

 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 22.03.2019 12:17

@treyBake Если вы используете PHP 7, вам следует использовать $content = $data[$formData] ?? ''

JensV 22.03.2019 13:13

Нойс! Не знал об этом..! :D

treyBake 22.03.2019 13:17

Другие вопросы по теме