Цикл PHP Foreach - недостающие данные - как создать ответ с «без данных» вместо получения предупреждения - PullRequest
0 голосов
/ 25 января 2019

Спасибо за любую помощь, которую вы можете предложить с этим ...

Я создаю страницу с кучей отчетов о погоде от различных погодных инструментов.Проблема, с которой я сталкиваюсь, заключается в том, что иногда эти инструменты не отправляют определенные данные по разным причинам.Я использую цикл foreach для отображения всех погодных условий ... но если станция не отправила, например, значение порыва ветра, я получаю предупреждение в списке.Очевидно, я бы предпочел, чтобы в списке просто говорилось «нет данных» или что-то в этом роде ... вместо большого красного поля с предупреждением.

Вот код, над которым я работал ...

<table>
    <tbody>
        <tr>
            <th>Site</th>
            <th>Temperature°F</th>
            <th>Dew Point°F</th>
            <th>Humidity%</th>
            <th>Wind Direction</th>
            <th>Wind Speed MPH</th>
            <th>Wind Gust MPH</th>
            <th>Pressure (mb)</th>
        </tr>
        <?php foreach($data->STATION as $site): ?>
        <tr>
            <td> <?php echo($site->NAME); ?> </td>
            <td> <?php echo($site->OBSERVATIONS->air_temp_value_1)->value; ?> </td>
            <td> <?php echo($site->OBSERVATIONS->dew_point_temperature_value_1d)->value; ?> </td>
            <td> <?php echo($site->OBSERVATIONS->relative_humidity_value_1)->value; ?> </td>
            <td> <?php echo($site->OBSERVATIONS->wind_cardinal_direction_value_1d)->value; ?> </td>
            <td> <?php echo($site->OBSERVATIONS->wind_speed_value_1)->value; ?> </td>
            <td> <?php echo($site->OBSERVATIONS->wind_gust_value_1)->value; ?> </td>
            <td> <?php echo($site->OBSERVATIONS->sea_level_pressure_value_1d)->value; ?> </td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>

Все они получены из данных JSON из API.Проблема в том, что если новое наблюдение от метеорологического прибора не отправляет значение порыва ветра ... то в данных JSON для этой переменной ничего нет.Но мой код все еще ищет его в данных JSON.Поэтому я получаю предупреждение:

Примечание: неопределенное свойство: stdClass :: $ wind_gust_value_1 в C: \ wamp64 \ www \ mesowesttable.php в строке 48

Есть ли способ получитьтаблица заполняется "Нет данных" вместо того, чтобы получить предупреждение?Какой-то тип выражения "если / тогда"?

Спасибо всем,

Джастин

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вы можете использовать PHPs оператор объединения нулей (??), чтобы проверить, установлено значение или нет.

<?php echo $site->OBSERVATIONS->wind_gust_value_1->value ?? 'no data'; ?>
0 голосов
/ 25 января 2019

вы можете проверить, установлено ли значение для этой переменной:

$wind_gust_value = isset($site->OBSERVATIONS->wind_gust_value_1->value) ? $site->OBSERVATIONS->wind_gust_value_1->value : 'empty';
echo $wind_gust_value;

или сначала инициализировать с некоторыми данными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...