放牧代码和思想
专注自然语言处理、机器学习算法
    This thing called love. Know I would've. Thrown it all away. Wouldn't hesitate.

PHP中的感叹号和逻辑与运算符使用说明

其实就是为了偷懒用的,可以省去写if……else的麻烦。初接触PHP,在RTFSC的过程中,看到这么一句代码:

!$this->alias && $this->alias = $this->table;

百思不得其解,原来是PHP的基础语法,前面为空就执行后面的代码,否则就略过。还以为完全跟C++一样的语法呢。顺便摘抄一段说明备忘:

逻辑运算符
例子 名称 结果
$a and $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE
$a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE
$a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE
$a && $b And(逻辑与) TRUE,如果 $a 与 $b 都为 TRUE
$a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE


Example #1 逻辑运算符示例

复制代码代码如下:

<?php
// 下面的 foo() 不会被调用,因为它们被运算符“短路”了。
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// "||" 的优先级比 "or" 高
$e = false || true; // $e 被赋值为 (false || true),结果为 true
$f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高]
var_dump($e, $f);
// "&&" 的优先级比 "and" 高
$g = true && false; // $g 被赋值为 (true && false),结果为 false
$h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高]
var_dump($g, $h);
?>


上例的输出类似于:

bool(true)

bool(false)

bool(false)

bool(true)

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » PHP中的感叹号和逻辑与运算符使用说明

评论 欢迎留言

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

我的作品

HanLP自然语言处理包《自然语言处理入门》