邏輯運算子

php 的邏輯運算子除了 && 跟 || 之外,還有 and 跟 or

他們之間的差異在有不同的優先順序 Precedence

而這個優先順序上的差異,會讓程式在一些情況下,產生跟你想像的不一樣的成果

使用 &&

1
2
3
4
5
6
7
8
<?php

$a = true && false;

// equal
$a = (true && false);

// $a: false

使用 and

1
2
3
4
5
6
7
8
<?php

$a = true and false;

// equal
($a = true) and false;

// $a: true

“=” 優先順序高於 “and” “or”

and 跟 or 的其他用途

1
2
3
<?php

do_something() and success() or failure();

do_something() 成功的話會執行 success(),失敗的話會執行 failure()

類似 bash 中常見的用法

1
2
3
$ cmd1 && cmd2 || cmd3

$ test -d ./project || mkdir ./project

Reference