PHP三元運算子 抑制符 反引號

2021-08-29 07:19:44 字數 1183 閱讀 9260

語法:表示式 (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和...