Я не понимаю, как if(!empty($var))
может создать путаницу, но я согласен, что if ($var)
проще.- vanneto 8 марта 12 в 13: 33
Поскольку empty
имеет особую цель подавления ошибок для несуществующих переменных.Вы не хотите подавлять ошибки, если вам не нужно. Полное руководство по PHP isset
И empty
объясняет проблему подробно.- deceze ♦ 9 марта '12 в 1: 24
Сосредоточение на части подавления ошибок, если переменная являетсямассив , где ключ , к которому осуществляется доступ , может быть или не быть определен :
if($web['status'])
будет производить: Примечание : неопределенный индекс: статус
- Чтобы получить доступ к этому ключу без ошибок:
if(isset($web['status']) && $web['status'])
(2-е условиене проверяется, если 1-е число FALSE
) ИЛИ if(!empty($web['status']))
.
Однако, как deceze ♦ указал , истинное значение определенной переменной делает !empty
избыточным, но вы все равно должны помнить, что PHP предполагает следующие примеры как FALSE
:
null
''
или ""
0.0
0
'0'
или "0"
'0' + 0 + !3
Итак, если ноль является значимым статусом, который вы хотите обнаружить, выследует использовать строковые и числовые сравнения:
Безошибочное и ноль обнаружение:
if(isset($web['status'])){
if($web['status'] === '0' || $web['status'] === 0 ||
$web['status'] === 0.0 || $web['status']) {
// not empty: use the value
} else {
// consider it as empty, since status may be FALSE, null or an empty string
}
}
Общее условие ($web['status']
) следует оставить в конце всего оператора.