Точно так же, как &
и &&
оператор, двойной Оператор является оператором "короткого замыкания".
, Например:
if(condition1 || condition2 || condition3)
, Если condition1 верен, условие 2 и 3 НЕ будет проверено.
if(condition1 | condition2 | condition3)
Это проверит условия 2 и 3, даже если 1 будет уже верно. Поскольку Ваши условия могут быть довольно дорогими функциями, можно получить хорошее повышение производительности при помощи их.
существует один большой протест, NullReferences или подобные проблемы. Например:
if(class != null && class.someVar < 20)
, Если класс является пустым, оператор "if" остановится, после class != null
ложь. Если Вы только используете & это попытается проверить class.someVar
, и Вы получаете хорошее NullReferenceException
. С Или-оператором, который не может быть так большой частью прерывания, поскольку маловероятно, что Вы инициировали что-то плохо, но это - что-то для учета.
Никто никогда не использует сингл &
или |
операторы, хотя, если у Вас нет дизайна, где каждое условие является функцией, которая должна быть выполнена. Походит на запах дизайна, но иногда (редко) это - очевидный способ, чтобы сделать материал. &
оператор действительно "выполняет эти 3 функции, и если один из них возвращает false, еще выполнитесь блок", в то время как эти |
еще действительно "только работает блок, если ни один не возвращает false" - может быть полезным, но, как сказано, часто это - запах дизайна.
существует Второе использование |
и &
оператор хотя: Битовые операции .
Используйте empty () и / или is_null ()
http://www.php.net/empty http://www.php.net/is_null
Одно только пустое позволит достичь вашего текущего использования, is_null просто сделает возможным больший контроль, если вы хотите различать пустое поле и пустое поле.
Вы можете использовать функцию is_null ().
http://php.net/manual/en/function.is-null.php : в комментариях:
mdufour в gmail точка com 20 августа 2008 г. 04:31 Тестирование поля / столбца NULL, возвращаемого запросом mySQL.
Предположим, вы хотите проверить, является ли поле / столбец «foo» из заданной строки таблицы «bar», когда>, возвращаемое запросом mySQL, равно нулю. Просто используйте функцию is_null ():
[connect…]
$qResult=mysql_query("Select foo from bar;");
while ($qValues=mysql_fetch_assoc($qResult))
if (is_null($qValues["foo"]))
echo "No foo data!";
else
echo "Foo data=".$qValues["foo"];
[…]
Кроме того, не забывайте оператор ===, когда вы работаете с числами, которые могут означать null или 0 или возвращать некоторую форму false или null, это не то, что вы ищу.