在中文中,PHP 的 && 和 and 是相同的吗?
最近我正在考虑获得PHP资格,而且我打算选择国际认证,所以我正在学习Zend公司的Zend Certified PHP Engineer。
在其中,我发现了关于逻辑运算的令人大开眼界的信息,所以我想分享一下。
总结:
-
- PHP の論理演算子は英語でも書ける
-
- 記号で書く方が英語で書く方より処理が先に行われる
-
- うまいこと使えば括弧地獄を軽減できる(が、おすすめはしない)
- 「かつ」「または」の意味で使うなら記号で書いた方が安全
逻辑运算符是指
逻辑运算符是用于对真值进行运算的运算符。
&&: 演算子の両側が true の場合に限り、結果が true となる。「論理積」ともいう。
||: 演算子の片側が true の場合に結果が true となる。両側が true でもよい。「論理和」ともいう。
!: 真偽値の左側について、真偽値を反転させる。例えば !true は false になる。
这些符号也有英文表达。
and は上記の && の説明と同じ動作をする。
or は上記の || の説明と同じ動作をする。
xor: 演算子のどちらか片側が true の場合に限り、結果が true となる。両側が true の場合は false となる。
這是一個先計算邏輯和的陷阱。
在优先级中,对于 && 和 || 运算符,优先使用 &&;而对于 and 和 or 运算符,优先使用 and。
那么,那些情况下怎么办呢?
&& と or 指摘がありましたので削除しました
and と ||
让我们通过一个根据逻辑和与逻辑积的计算顺序将结果改变的例子来进行确认。
<?php
echo "'and' と '||' では ";
if (true || false and false) {
echo "'and' が優先される", PHP_EOL;
} else {
echo "'||' が優先される", PHP_EOL;
}
'and' と '||' では '||' が優先される
你瞧,居然先计算符号,尤其是在第二个例子中,关于逻辑乘和逻辑和的顺序的“神话”都崩塌了。
赶快查看手册中的运算符部分!
根据手册所示
根据手册上的运算符优先级表,逻辑运算符的优先顺序如下。
!
2&&
3||
4and
5xor
6or
可以看到符号的排名更高。
在PHP中,&&和and,||和or之间并不完全具有相同的意义,因此在使用之前需要理解它们的行为。
(个人不推荐)有助于减少括号使用的例子
在进行PHP开发时,条件分支可能会变得非常复杂,可能会出现if语句变成这种样子的情况。
if (($person->入場券を持っている() && ($person->ちゃんと列に並んでる() || $person->isおりこうさん())) || ($person->特別な券を持っている() && $person->is55歳以上である())
) {
// 処理
}
只要正确理解逻辑运算符的优先级,就可以不使用括号来写。
if (
$person->入場券を持っている()
and $person->ちゃんと列に並んでる() || $person->isおりこうさん()
or $person->特別な券を持っている() && $person->is55歳以上である()
) {
// 処理
}
在中文中同义改述如下:
但我个人觉得这种方式可能不太受欢迎。
原因是它使用了越来越多的符号,让阅读变得不直观,而且要求对PHP逻辑运算符有深入的理解。
实际上,在编写如此复杂的条件之前,建议先重新检查代码本身。
在需要根据公司提供的服务选择语言的公司,以及招聘了大量新人的公司中,建议继续使用括号作为辅助,在逻辑表达中仅使用&&和||。
想要取得PHP资格的人,请与我一起努力学习。
为了取得资格,需要详细理解语言规范。