2015-10-27 3 views
0

У меня есть простой PHP код, как этотВ противном случае пустой чек

$revenue = $this->dailyCounts['revenue'][$date]['net_revenue'] + (!empty($activity[$date]) ? $activity[$date] : 0) * 1000; 

Но здесь всегда показывает предупреждения, когда переменная $activity является NULL хотя я проверка на пустой. Я запускаю это внутри цикла, и он всегда показывает undefined index, когда $activity имеет значение null.

ответ

0

использование isset() вместо empty(),

(!isset($activity[$date]) 

empty() непосредственно проверить значение, но isset() будет видеть, если индекс или нет.

См. this и this для получения дополнительной информации.

+0

причина вниз голосования ?? –

+0

с массивом 'null',' isset' и '! Empty' дают тот же результат – HectorJ

0

Попробуйте это:

$revenue = $this->dailyCounts['revenue'][$date]['net_revenue'] + ((isset($activity[$date]) && !empty($activity[$date])) ? $activity[$date] : 0) * 1000; 
1

Использование IsSet вместо пустой не решит любую проблему в этом случае.

Предупреждение не генерируется, если переменная не существует. Это означает, что empty() по существу является кратким эквивалентом! Isset ($ var) || $ var == false.

http://php.net/manual/en/function.empty.php

Я предполагаю, что уведомление исходит от $ this-> dailyCounts [ 'доходы'] [$ дате] [ 'net_revenue']

+0

Нет, это не так. Когда я добавил проверку isset(), она исчезла. Я использую это в Laravel 5 –

+0

@HappyCoder: можете ли вы вставить свой фиксированный код? Это показывает, что оба предупреждения не дают и дают одинаковые результаты: http://codepad.org/HjgrZ3RZ – HectorJ

Смежные вопросы