語法:表示式 (expr1) ? (expr2) : (expr3) 在 expr1 求值為 true 時的值為 expr2,在 expr1 求值為 false 時的值為 expr3。
自 php 5.3 起,可以省略三元運算子中間那部分。表示式 expr1 ?: expr3 在 expr1 求值為 true 時返回 expr1,否則返回 expr3。
//簡單的判斷 用三元運算子 比 if else 更好用
$a = true;
$a ? $b = 11 : $b = 22;
echo $b.'
'; //輸出22
需要注意三元運算子是個語句,因此其求值不是變數,而是語句的結果。如果想通過引用返回乙個變數這點就很重要。在乙個通過引用返回的函式中語句 return $var == 42 ? $a : $b; 將不起作用,以後的 php 版本會為此發出一條警告。
echo '';
echo `ipconfig`; //設定顯示
echo '
';
還利用反引號可以執行 unix 下的命令,並傳回執行結果。例如:
echols -l *.txt
;
表示將 ls -l *.txt 命令的執行結果輸出,以反引號圍住的字串為要執行的 unix 指令。
php 支援乙個錯誤控制運算子:@。當將其放置在乙個 php 表示式之前,該表示式可能產生的任何錯誤資訊都被忽略掉。
它可以遮蔽函式執行過程中遇到問題而產生的一些錯誤、警告資訊,這樣使用者就看不到程式的出錯資訊。這樣除了使用者介面會友好一些外,更重要的是安全性,因為遮蔽了出錯檔案的路徑等資訊。
//設定開啟乙個不存在的檔案, 不加@ 的情況下會報錯,加了@ 以後空白一片…… 什麼也沒有 -
$file = @fopen('111111adfasdfdsadf.txt','r');
需要注意的是:@ 運算子只對表示式有效。對新手來說乙個簡單的規則就是:如果能從某處得到值,就能在它前面加上 @ 運算子。例如,可以把它放在變數,函式和 include 呼叫,常量,等等之前。不能把它放在函式或類的定義之前,也不能用於條件結構例如 if 和 foreach 等。
不好的就是如果將錯誤抑制不讓顯示了,那指令碼有可能會沒有任何跡象顯示原因而卡死在某處
PHP 三元運算子
a a a 1 第一種 a a 1 第二種第二種寫法從 php 5.3 引入,表示若 a 返回值為真時,取 a 的返回值。此外,在 php7 中引入了?運算子 a a 1 該表示式與第二種寫法類似,可以達到相同的效果。但?運算子是以判斷 a 變數是否存在於上下文環境中作為條件,而三元運算子不具備這種...
三元運算子
根據條件執行兩個語句中的其中乙個。test?語句1 語句2引數 test 任何boolean 表示式。語句1當 test 是true時執行的語句。可以是復合語句。語句2當 test 是false時執行的語句。可以是復合語句。說明?運算子是if.else語句的快捷方式。它通常被用作較大表示式的一部分,...
三元運算子
先定義a和b 兩個數比較 int a 123 int b 144 通過定義big來反映a和b誰更小 int big a b?a b 通過定義small來反映a和b誰更小 int small asystem.out.println a和b之間較大的數 big system.out.println a和...