基本的賦值運算符是“=”。一開始可能會以為它是“等於”,其實不是的。它實際上意味著把右邊表達式的值賦給左邊的運算數
下圖為算術賦值運算符
例子 | 等同於 | 操作 |
---|---|---|
$a += $b | $a = $a + $b | 加法 |
$a -= $b | $a = $a - $b | 减法 |
$a *= $b | $a = $a * $b | 乘法 |
$a /= $b | $a = $a / $b | 除法 |
$a %= $b | $a = $a % $b | 取餘數 |
$a **= $b | $a = $a ** $b | 指數 |
下圖為其他賦值運算符
例子 | 等同於 | 操作 |
---|---|---|
$a .= $b | $a = $a . $b | 字符串拼接 |
$a ?? $b | $a = $a ?? $b | NULL合併 |
位運算符允許對整型數中指定的位進行求值和操作。
下圖為位元運算符號
例子 | 名稱 | 结果 |
---|---|---|
$a & $b | And(按位與) | 將把 $a 和 $b 中都為 1 的位設為 1。 |
$a | $b | Or(按位或) | 將把 $a 和 $b 中任何一個為 1 的位設為 1。 |
$a ^ $b | Xor(按位異或) | 將把 $a 和 $b 中一個為 1 另一個為 0 的位設為 1。 |
~ $a | Not(按位取反) | 將 $a 中為 0 的位設為 1,反之亦然。 |
$a << $b | Shift left(左移) | 將 $a 中的位向左移動 $b 次(每一次移動都表示“乘以 2”)。 |
$a >> $b | Shift right(右移) | 將 $a 中的位向右移動 $b 次(每一次移動都表示“除以 2”)。 |
比較運算符,如同它們名稱所暗示的,允許對兩個值進行比較。
例子 | 名稱 | 結果 |
---|---|---|
$a == $b | 等於 | true,如果類型轉換後 $a 等於 $b。 |
$a === $b | 全等於 | true,如果 $a 等於 $b,並且它們的類型也相同。 |
$a != $b | 不等於 | true,如果類型轉換後 $a 不等於 $b。 |
$a <> $b | 不等於 | true,如果類型轉換後 $a 不等於 $b。 |
$a !== $b | 不全等 | true,如果 $a 不等於 $b,或者它們的類型不同。 |
$a < $b | 小於 | true,如果 $a 嚴格小於 $b。 |
$a > $b | 大於 | true,如果 $a 嚴格大於 $b。 |
$a <= $b | 小於等於 | true,如果 $a 小於或者等於 $b。 |
$a >= $b | 大於等於 | true,如果 $a 大於或者等於 $b。 |
$a <=> $b | 太空船運算符(組合比較符) | 當$a小於、等於、大於 $b時 分别返回一個小於、等於、大於0的 int 值。 |
PHP 支持一個執行運算符:反引號(``)。注意這不是單引號! PHP 將嘗試將反引號中的內容作為 shell 命令來執行,並將其輸出信息返回(即,可以賦給一個變量而不是簡單地丟棄到標準輸出)。使用反引號運算符“`”的效果與函數 shell_exec() 相同。
<?php
$output = `ipconfig /all`;
echo "<pre>$output</pre>"; // 輸出所有IP資訊
?>
注意: 遞增/遞減運算符不影響布爾值。遞減 null 值也沒有效果,但是遞增 null 的結果是 1。
例子 | 名称 | 效果 |
---|---|---|
++$a | 先加 | $a 的值加一,然後返回 $a。 |
$a++ | 後加 | 返回 $a,然後將 $a 的值加一。 |
--$a | 先减 | $a 的值减一, 然后返回 $a。 |
$a-- | 後减 | 返回 $a,然後將 $a 的值减一。 |
簡易的範例
<?php
echo "後增量(PostIncrement)\n";
$a = 5;
echo "Should be 5: " . $a++ . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";
echo "先增量(PreIncrement)\n";
$a = 5;
echo "Should be 6: " . ++$a . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";
echo "後減(PostDecrement)\n";
$a = 5;
echo "Should be 5: " . $a-- . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
echo "先減(Predecrement)\n";
$a = 5;
echo "Should be 4: " . --$a . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
?>
例子 | 名稱 | 结果 |
---|---|---|
$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。 |
有兩個字符串(string)運算符。第一個是連接運算符(“.”),它返回其左右參數連接後的字符串。第二個是連接賦值運算符(“.=”),它將右邊參數附加到左邊的參數之後。
範例程式碼
<?php
$a = "Hello ";
$b = $a . "World!";
echo $b."\n"; // output "Hello World!"
$a = "Hello ";
$a .= "World!"; // output "Hello World!"
echo $a;
?>
例子 | 名稱 | 结果 |
---|---|---|
$a + $b | 聯合 | $a 和 $b 的联合。 |
$a == $b | 相等 | 如果 $a 和 $b 具有相同的键/值,則為 true。 |
$a === $b | 全等 | 如果 $a 和 $b 具有相同的键/值,並且順序和類型都相同則為 true。 |
$a != $b | 不等於 | 如果 $a 不等於 $b 則為 true。 |
$a <> $b | 不等於 | 如果 $a 不等於 $b 則為 true。 |
$a !== $b | 不相等 | 如果 $a 不全等於 $b 則為 true。 |
如果是運用運算符將數組相加,會把加號右邊的附加到加號左邊數組,
兩個數組中都有的鍵名,則只用左邊數組中的,右邊的被忽略
以下簡單範例示範:
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
var_dump($c);
$c = $b + $a; // Union of $b and $a
var_dump($c);
// 輸出:
// array(3) {
// ["a"]=>
// string(5) "apple"
// ["b"]=>
// string(6) "banana"
// ["c"]=>
// string(6) "cherry"
// }
// array(3) {
// ["a"]=>
// string(4) "pear"
// ["b"]=>
// string(10) "strawberry"
// ["c"]=>
// string(6) "cherry"
// }
?>
以下示範比較數組
<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>
instanceof 方法用於確定一個 PHP 變數是否屬於某一類 class 的實例,
也可以用來確認某一個變數,是否繼承自某一父類或子類的實例。
以下範例
<?php
class MyClass
{
}
class NotMyClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>
// 輸出
// bool(True)
// bool(False)
資料來源: https://www.php.net/