iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
自我挑戰組

後端新手PHP+Laravel筆記系列 第 7

[Day7]PHP運算符02

  • 分享至 

  • xImage
  •  

PHP運算符

賦值運算符

基本的賦值運算符是“=”。一開始可能會以為它是“等於”,其實不是的。它實際上意味著把右邊表達式的值賦給左邊的運算數

下圖為算術賦值運算符

例子 等同於 操作
$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/


上一篇
[Day6]PHP運算符01
下一篇
[Day8]PHP判斷式01
系列文
後端新手PHP+Laravel筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言