PHP8的運算符-PHP8知識詳解
導(dǎo)讀:本節(jié)主要的知識點有:運算符優(yōu)先級、算術(shù)運算符、賦值運算符、位運算符、比較運算符、錯誤控制運算符、執(zhí)行運算符、遞增/遞減運算符、邏輯運算符、字符串運算符、數(shù)組運算符、類型運算符、三元運算符。
永久美國免備案虛擬主機1元1天,15元1月,100元1年,1000元永久
站長在線旗下答案網(wǎng)站,全站所有題目,免費查看答案和答案解析
運算符是可以通過給出的一或多個值(用編程行話來說,表達式)來產(chǎn)生另一個值(因而整個結(jié)構(gòu)成為一個表達式)的東西。
PHP8的運算符有很多,按類型分有一元運算符、二元運算符、三元運算符。
一元運算符只對一個表達式執(zhí)行操作,只能接受一個值,例如 !(邏輯取反運算符)或 ++(遞增運算符)。
二元運算符用于兩個操作數(shù)之間,可接受兩個值,例如熟悉的算術(shù)運算符 +(加)和 -(減),大多數(shù) PHP 運算符都是這種。
三元運算符用在三個操作數(shù)之間,可接受三個值,列如唯一的三元運算符 ? :。
本節(jié)主要的知識點有:運算符優(yōu)先級、算術(shù)運算符、賦值運算符、位運算符、比較運算符、錯誤控制運算符、執(zhí)行運算符、遞增/遞減運算符、邏輯運算符、字符串運算符、數(shù)組運算符、類型運算符、三元運算符。
一、運算符優(yōu)先級
php8 的運算符完整列表見下面運算符優(yōu)先級。解釋了運算符優(yōu)先級和結(jié)合方向,這控制著在表達式包含有若干個不同運算符時究竟怎樣對其求值。
運算符優(yōu)先級指定了兩個表達式綁定得有多“緊密”。例如,表達式 1 + 5 * 3 的結(jié)果是 16 而不是 18 是因為乘號(“*”)的優(yōu)先級比加號(“+”)高。必要時可以用括號來強制改變優(yōu)先級。例如:(1 + 5) * 3 的值為 18。
如果運算符優(yōu)先級相同,那運算符的結(jié)合方向決定了該如何運算。例如,"-"是左聯(lián)的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且結(jié)果是 -4. 另外一方面,"="是右聯(lián)的,所以 $a = $b = $c 等同于 $a = ($b = $c)。
沒有結(jié)合的相同優(yōu)先級的運算符不能連在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表達式 1 <= 1 == 1 是合法的, 因為 == 的優(yōu)先級低于 <=。
關(guān)聯(lián)性僅對二(三)元操作符有意義。 一元操作符是前綴或者后綴,所以不適用該概念。 例如 !!$a 僅可分為 !(!$a)。
括號的使用,哪怕在不是必要的場合下,通過括號的配對來明確標明運算順序,而非靠運算符優(yōu)先級和結(jié)合性來決定,通常能夠增加代碼的可讀性。
下表按照優(yōu)先級從高到低列出了運算符。同一行中的運算符具有相同優(yōu)先級,此時它們的結(jié)合方向決定求值順序。
二、算術(shù)運算符
1、+$a , 標識運算, 根據(jù)情況將 $a 轉(zhuǎn)化為 int 或 float。
2、-$a ,取反運算, $a 的負值。
3、$a + $b, 加法運算, $a 和 $b 的和。
4、$a - $b, 減法運算, $a 和 $b 的差。
5、$a * $b, 乘法運算, $a 和 $b 的積。
6、$a / $b, 除法運算, $a 除以 $b 的商。
7、$a % $b, 取模運算, $a 除以 $b 的余數(shù)。
8、$a ** $b, 求冪運算, $a 的 $b次方的值。
示例:
<?php
echo (5 % 3); // 打印 2
echo "<br>"; //換行顯示
echo (5 % -3); // 打印 2
echo "<br>"; //換行顯示
echo (-5 % 3); // 打印 -2
echo "<br>"; //換行顯示
echo (-5 % -3); // 打印 -2
?>
運行結(jié)果如下:
2
2
-2
-2
三、賦值運算符
賦值運算符的作用是把一定的數(shù)值加載給特定的變量?;镜馁x值運算符是“=”。即把右邊表達式的值賦給左邊的運算數(shù)(變量)。
3.1、算術(shù)賦值運算符
1、$a += $b, 等同于 $a = $a + $b ,加法運算符
2、$a -= $b, 等同于 $a = $a - $b ,減法運算符
3、$a *= $b, 等同于 $a = $a * $b ,乘法運算符
4、$a /= $b, 等同于 $a = $a / $b ,除法運算符
5、$a %= $b,等同于 $a = $a % $b, 取模運算符
6、$a **= $b ,等同于 $a = $a ** $b ,指數(shù)運算符
3.2、位賦值運算符
1、$a &= $b, 等同于$a = $a & $b, 按位與
2、$a |= $b, 等同于$a = $a | $b ,按位或
3、$a ^= $b ,等同于$a = $a ^ $b ,按位異或
4、$a <<= $b,等同于 $a = $a << $b, 左移
5、$a >>= $b ,等同于$a = $a >> $b, 右移
3.3、其他賦值運算符
1、$a .= $b, 等同于$a = $a . $b ,字符串拼接
2、$a ??= $b, 等同于$a = $a ?? $b ,NULL 合并
四、位運算符
位運算符允許對整型數(shù)中指定的位進行求值和操作。
1、$a & $b ,And(按位與), 將把 $a 和 $b 中都為 1 的位設(shè)為 1。
2、$a | $b ,Or(按位或), 將把 $a 和 $b 中任何一個為 1 的位設(shè)為 1。
3、$a ^ $b ,Xor(按位異或), 將把 $a 和 $b 中一個為 1 另一個為 0 的位設(shè)為 1。
4、~ $a Not,(按位取反), 將 $a 中為 0 的位設(shè)為 1,反之亦然。
5、$a << $b, Shift left(左移), 將 $a 中的位向左移動 $b 次(每一次移動都表示“乘以 2”)。
6、$a >> $b, Shift right(右移), 將 $a 中的位向右移動 $b 次(每一次移動都表示“除以 2”)。
要用括號確保想要的優(yōu)先級。例如 $a & $b == true 先進行比較再進行按位與;而 ($a & $b) == true 則先進行按位與再進行比較。
位移在 PHP 中是數(shù)學(xué)運算。向任何方向移出去的位都被丟棄。左移時右側(cè)以零填充,符號位被移走意味著正負號不被保留。右移時左側(cè)以符號位填充,意味著正負號被保留。
如果 &、 | 和 ^ 運算符的左右兩個操作對象都是字符串,將對會組成字符串的字符 ASCII 值執(zhí)行操作,結(jié)果也是一個字符串。除此之外,兩個操作對象都將 轉(zhuǎn)換為整數(shù) ,結(jié)果也將會是整數(shù)。
如果 ~ 運算符的操作對象是字符串,則將對組成字符串的字符 ASCII 值進行操作, 結(jié)果將會是字符串,否則操作對象和結(jié)構(gòu)都會是整數(shù)。
<< 和 >> 運算符的操作對象和結(jié)果始終都是整數(shù)。
五、比較運算符
比較運算符,如同它們名稱所暗示的,允許對兩個值進行比較。
1、$a == $b ,等于, true,如果類型轉(zhuǎn)換后 $a 等于 $b。
2、$a === $b, 全等于, true,如果 $a 等于 $b,并且它們的類型也相同。
3、$a != $b ,不等, true,如果類型轉(zhuǎn)換后 $a 不等于 $b。
4、$a <> $b ,不等 ,true,如果類型轉(zhuǎn)換后 $a 不等于 $b。
5、$a !== $b ,不全等 ,true,如果 $a 不等于 $b,或者它們的類型不同。
6,、$a < $b, 小于, true,如果 $a 嚴格小于 $b。
7、$a > $b, 大于, true,如果 $a 嚴格大于 $b。
8、$a <= $b, 小于等于, true,如果 $a 小于或者等于 $b。
9,、$a >= $b, 大于等于, true,如果 $a 大于或者等于 $b。
10、$a <=> $b, 太空船運算符(組合比較符), 當$a小于、等于、大于 $b時 分別返回一個小于、等于、大于0的 int 值。
六、錯誤控制運算符
PHP 支持一個錯誤控制運算符“@”。當將其放置在一個 PHP 表達式之前,該表達式可能產(chǎn)生的任何錯誤診斷都被抑制。
七、執(zhí)行運算符
PHP 支持一個執(zhí)行運算符:反引號(``)。注意這不是單引號!PHP 將嘗試將反引號中的內(nèi)容作為 shell 命令來執(zhí)行,并將其輸出信息返回(即,可以賦給一個變量而不是簡單地丟棄到標準輸出)。使用反引號運算符“`”的效果與函數(shù) shell_exec() 相同。
<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?>
注意:
1、關(guān)閉了 shell_exec() 時反引號運算符是無效的。
2、與其它某些語言不同,反引號不能在雙引號字符串中使用。
八、遞增/遞減運算符
PHP 支持 C 風(fēng)格的前/后遞增與遞減運算符。
1、++$a, 前加: $a 的值加一,然后返回 $a。
2、$a++ ,后加: 返回 $a,然后將 $a 的值加一。
3、--$a ,前減 :$a 的值減一, 然后返回 $a。
4、$a-- ,后減 :返回 $a,然后將 $a 的值減一。
九、邏輯運算符
一個編程語言最重要的功能之一就是進行邏輯判斷和運算,比如邏輯與、邏輯或、邏輯非、邏輯異或。
1、$a and $b ,And(邏輯與): true,如果 $a 和 $b 都為 true。
2、$a or $b, Or(邏輯或): true,如果 $a 或 $b 任一為 true。
3、$a xor $b, Xor(邏輯異或): true,如果 $a 或 $b 任一為 true,但不同時是。
4、! $a, Not(邏輯非): true,如果 $a 不為 true。
5、$a && $b ,And(邏輯與): true,如果 $a 和 $b 都為 true。
6、$a || $b, Or(邏輯或): true,如果 $a 或 $b 任一為 true。
十、字符串運算符
有兩個字符串(string)運算符。第一個是連接運算符(“.”),它返回其左右參數(shù)連接后的字符串。第二個是連接賦值運算符(“.=”),它將右邊參數(shù)附加到左邊的參數(shù)之后。
<?php
$a = "你好"; //給變量$a賦值
$b = $a . "PHP8"; //現(xiàn)在 $b 包含 "你好 PHP8"
echo $b; //輸出變量$b
echo "<br>"; //換行顯示
$a = "你好"; //給變量$a賦值
$a .= "PHP8"; //現(xiàn)在 $a 包含 "你好 PHP8"
echo $a; //不打引號輸出變量$a
echo "<br>"; //換行顯示
echo '$a'; //打單引號輸出變量$a
echo "<br>"; //換行顯示
echo "$a"; //打雙引號輸出變量$a
?>
運行結(jié)果如下:
你好PHP8
你好PHP8
$a
你好PHP8
溫馨提醒,對于字符串型數(shù)據(jù)輸出,可以使用單引號,也可以使用雙引號,也可以不使用引號。
使用單引號和雙引號輸出同一個變量,結(jié)果是不同的。單引號輸出的是字符串,雙引號和不帶引號輸出的是變量的值。
十一、數(shù)組運算符
1、$a + $b ,聯(lián)合: $a 和 $b 的聯(lián)合。
2、$a == $b ,相等 :如果 $a 和 $b 具有相同的鍵/值對則為 true。
3、$a === $b ,全等: 如果 $a 和 $b 具有相同的鍵/值對并且順序和類型都相同則為 true。
4、$a != $b, 不等 :如果 $a 不等于 $b 則為 true。
5、$a <> $b, 不等 :如果 $a 不等于 $b 則為 true。
6、$a !== $b, 不全等: 如果 $a 不全等于 $b 則為 true。
+ 運算符把右邊的數(shù)組元素附加到左邊的數(shù)組后面,兩個數(shù)組中都有的鍵名,則只用左邊數(shù)組中的,右邊的被忽略。
數(shù)組中的單元如果具有相同的鍵名和值則比較時相等。
十二、類型運算符
使用instanceof 來進行實例引用。
1、確定一個 PHP 變量是否屬于某一類 class 的實例:
<?php
class MyClass
{
}
class NotMyClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>
以上示例會輸出:
bool(true)
bool(false)
<?php
class parentClass
{
}
class MyClass extends ParentClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
?>
以上示例會輸出:
bool(true)
bool(true)
3、檢查一個對象是否不是某個類的實例
<?php
class MyClass
{
}
$a = new MyClass;
var_dump(!($a instanceof stdClass));
?>
以上示例會輸出:
bool(true)
4、用于確定一個變量是不是實現(xiàn)了某個接口的對象的實例
<?php
interface MyInterface
{
}
class MyClass implements MyInterface
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>
以上示例會輸出:
bool(true)
bool(true)
十三、三元運算符
三元運算符是一種在編程中常用的條件語句,也被稱為三目運算符或條件運算符。它通常用于簡化條件判斷和賦值操作。
在PHP8中,三元運算符“?:”被稱為“三元運算符”或“三目運算符”,其語法格式為:
條件表達式 ? 表達式1 : 表達式2
其中,條件表達式為一個布爾表達式,如果該表達式的值為真,則返回表達式1的值;如果該表達式的值為假,則返回表達式2的值。
例如,以下是一個使用三元運算符的示例:
<?php
$a = "99>88";
$b = $a ?: "100不大于99";
$c = $a ? "100大于99" : "100不大于99";
echo $b;
echo "<br>";
echo $c;
?>
運行結(jié)果如下:
99>88
100大于99
到此為止,本文主要講解的運算符優(yōu)先級、算術(shù)運算符、賦值運算符、位運算符、比較運算符、錯誤控制運算符、執(zhí)行運算符、遞增/遞減運算符、邏輯運算符、字符串運算符、數(shù)組運算符、類型運算符、三元運算符就講解完畢了,大家慢慢參考學(xué)習(xí)。
本文地址:http://003188.cn/php8deyunsuanfu.html
阿里云虛擬主機1G空間,120元一年
香港、美國虛擬主機100元一年,1000元永久
騰訊云雙十一0.4折起,2核8G5M三年僅700元,2核4G8M三年僅198元
猜你喜歡