<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # PHP 運算符 > 原文: [https://zetcode.com/lang/php/operators/](https://zetcode.com/lang/php/operators/) 在 PHP 編程教程的這一部分中,我們討論 PHP 運算符。 運算符是特殊符號,表示已執行某個過程。 編程語言的運算符來自數學。 程序員處理數據。 運算符用于處理數據。 ## PHP 運算符類型 我們有幾種類型的運算符: * 算術運算符 * 布爾運算符 * 關系運算符 * 按位運算符 一個運算符可以有一個或兩個操作數。 操作數是運算符的輸入(參數)之一。 僅使用一個操作數的那些運算符稱為一元運算符。 那些使用兩個操作數的對象稱為二進制運算符。 +和-可以是加減運算符,也可以是一元符號運算符。 這取決于實際情況。 ```php php> print +2; 2 php> print -2; -2 php> print 2; 2 php> print 2+2; 4 php> print 2-2; 0 ``` 加號可用于表示我們有一個正數,但通常不使用它。 減號更改值的符號。 ```php php> $a = 1; php> print -$a; -1 php> print -(-$a); 1 ``` 乘法和加法運算符是二進制運算符的示例。 它們與兩個操作數一起使用。 ```php php> print 3 * 3; 9 php> print 3 + 3; 6 ``` ## PHP 賦值運算符 賦值運算符`=`將值賦給變量。 `variable`是值的占位符。 在 PHP 中,變量以`$`字符開頭。 (在數學上,`=`運算符具有不同的含義。在一個方程式中,`=`運算符是一個相等運算符。該方程式的左側等于右側的等式。) ```php php> $x = 1; php> print $x; 1 ``` 在這里,我們為`$x`變量分配一個數字。 ```php php> $x = $x + 1; php> print $x; 2 ``` 先前的表達式在數學上沒有意義,但是在編程中是合法的。 該表達式意味著我們向`$x`變量加 1。 右邊等于 2,并且 2 分配給`$x`。 ```php php> 3 = $x; Parse error: syntax error, unexpected '=' in php shell code on line 1 ``` 此代碼示例導致語法錯誤。 我們無法為字面值分配值。 ## PHP 算術運算符 下表是 PHP 中的算術運算符表。 | 符號 | 名稱 | | --- | --- | | `+` | 加法 | | `-` | 減法 | | `*` | 乘法 | | `/` | 除法 | | `%` | 模數 | 以下示例顯示了算術運算。 `arithmetic.php` ```php <?php $a = 10; $b = 11; $c = 12; $add = $a + $b + $c; $sub = $c - $a; $mult = $a * $b; $div = $c / 3; echo "$add $sub $mult $div\n"; ``` 所有這些都是數學上已知的運算符。 ```php $ php arithmetic.php 33 2 110 4 ``` `%`運算符稱為模運算符。 它找到一個數除以另一個的余數。 ```php php> print 9 % 4; 1 ``` `9 % 4`,9 模 4 為 1,因為 4 兩次進入 9 且余數為 1。 ## PHP 計算素數 質數是大于 1 的整數,只能被 1 或本身平均除。 `primes.php` ```php <?php $nums = range(0, 100, 1); foreach ($nums as $n) { if ($n <= 1) continue; if ($n == 2 or $n == 3) { echo "$n "; continue; } $i = (int) sqrt($n); $isPrime = true; while ($i > 1) { if ($n % $i == 0) { $isPrime = False; } $i--; } if ($isPrime == True) { echo "$n "; } } echo "\n"; ``` 模運算符用于計算素數。 計算素數的算法是這樣的:我們選取一個數字并將其除以數字,從 1 到選取的數字。 已經證明,我們不需要嘗試所有較小的數字。 嘗試數字直到所選數字的平方根就足夠了。 ```php $nums = range(0, 100, 1); ``` 我們使用`range()`函數創建一個從 0 到 100 的整數數組。 ```php if ($n <= 1) continue; ``` 根據定義,素數是大于 1 的數; 因此,我們跳過計算并繼續下一個數字。 ```php if ($n == 2 or $n == 3) { echo "$n "; continue; } ``` 數字 2 和 3 是質數。 ```php $i = (int) sqrt($n); ``` 如果我們僅嘗試小于數字平方根的數字,那就可以了。 ```php while ($i > 1) { ... } ``` 使用`while`循環。 `$i`是計算出的數字的平方根。 我們使用減量運算符將每個循環周期的`$i`減 1。 當`$i`小于 1 時,我們終止循環。 例如,我們有 9。9 的平方根是 3。我們將 9 除以 3 和 2。 ```php if ($n % $i == 0) { $isPrime = False; } ``` 這是算法的核心。 如果對于任何`$i`值,余數除法運算符返回 0,則說明的數字不是質數。 ```php $ php primes.php 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 ``` 這些是 0 到 100 之間的質數。 ## PHP 連接字符串 我們使用點`.`運算符來連接字符串。 ```php php> print 'return' . 'of' . 'the' . 'king'; returnoftheking ``` 點運算符從四個字符串中得出一個字符串。 ```php php> print 3 . 'apples'; 3apples ``` 我們可以使用點運算符將字符串與數字連接起來。 在內部,數字將轉換為字符串,最后將兩個字符串連接在一起。 ```php php> print 'apples' * 3; 0 php> print 'apples' - 'oranges'; 0 php> print 'apples' + 'oranges'; 0 ``` 對字符串使用其他運算符沒有多大意義; 我們得到零。 ```php php> print (Integer) 'apple'; 0 ``` 這是因為在數字上下文中,字符串等于零。 ## PHP 布爾運算符 在 PHP 中,我們有`and`,`or`和否定`!`布爾運算符。 使用布爾運算符,我們可以執行邏輯運算。 這些常與`if`和`while`關鍵字一起使用。 `andop.php` ```php <?php $a = (True and True); $b = (True and False); $c = (False and True); $d = (False and False); var_dump($a, $b, $c, $d); ``` 此示例顯示了邏輯`and`運算符。 僅當兩個操作數均為`True`時,邏輯和運算符才求值為`True`。 ```php $ php andop.php bool(true) bool(false) bool(false) bool(false) ``` 如果兩個操作數中的任何一個為`True`,則邏輯`or`運算符的計算結果為`True`。 `orop.php` ```php <?php $a = (True or True); $b = (True or False); $c = (False or True); $d = (False or False); var_dump($a, $b, $c, $d); ``` 如果運算符的任一側為`True`,則運算結果為`True`。 ```php $ php orop.php bool(true) bool(true) bool(true) bool(false) ``` 否定運算符`!`設為`True False`和`False True`。 `negation.php` ```php <?php $a = ! False; $b = ! True; $c = ! (4<3); var_dump($a, $b, $c); ``` 該示例顯示了否定運算符的作用。 ```php $ php negation.php bool(true) bool(false) bool(true) ``` 并且,或者對短路進行了求值。 短路求值意味著僅當第一個參數不足以確定表達式的值時,才求值第二個參數:當和的第一個參數求值為`false`時,總值必須為`false`; 當或的第一個參數為`true`時,總值必須為`true`。 一個典型的例子如下。 `shortcircuit.php` ```php <?php $x = 10; $y = 0; if ($y != 0 and x/y < 100) { echo "a small value"; } ``` 表達式的第一部分計算為`False`。 表達式的第二部分不計算。 否則,我們將得到除以零的錯誤。 ## PHP 關系運算符 關系運算符用于比較值。 這些運算符總是產生布爾值。 | 符號 | 含義 | | --- | --- | | `<` | 小于 | | `<=` | 小于或等于 | | `>` | 大于 | | `>=` | 大于或等于 | | `==` | 等于 | | `!=`或`<>` | 不等于 | | `===` | 相同 | | `!==` | 不相同 | 該表顯示了八個 PHP 關系運算符。 ```php php> var_dump(3 < 4); bool(true) php> var_dump(3 == 4); bool(false) php> var_dump(4 >= 3); bool(true) ``` 正如我們已經提到的,關系運算符返回布爾值。 注意,關系運算符不限于數字。 我們也可以將它們用于其他對象。 盡管它們可能并不總是有意義的。 ```php php> var_dump("six" == "six"); bool(true) php> var_dump("a" > 6); bool(false) php> var_dump('a' < 'b'); bool(true) ``` 我們也可以比較字符串對象。 我們可以將關系運算符用于不同的對象類型。 在我們的例子中,我們將字符串與數字進行比較。 ```php php> var_dump('a' < 'b'); ``` 這里到底發生了什么? 計算機不知道字符或字符串。 對于他們來說,一切都只是數字。 字符是存儲在特定表中的特殊數字,例如 ASCII。 因此,最后,將比較兩個 ASCII 數字。 由于 a 在 b 之前,因此它的數字較小,因此該操作返回`true`。 `compare.php` ```php <?php echo 'a' < 'b'; echo "\n"; echo 'a is:', ord('a'); echo "\n"; echo 'b is:', ord('b'); echo "\n"; ``` 在內部,`a`和`b`字符是數字。 因此,當我們比較兩個字符時,我們將比較它們的存儲數字。 內置的`ord()`函數返回單個字符的 ASCII 值。 ```php $ php compare.php 1 a is:97 b is:98 ``` 實際上,我們比較兩個數字:97 與 98。 ```php php> print "ab" > "aa"; 1 ``` 假設我們有一個包含更多字符的字符串。 如果前幾個字符相等,則比較下一個字符。 在我們的情況下,第二個位置的`b`字符的值比`a`字符大。 這就是為什么`"ab"`字符串大于`"aa"`字符串的原因。 當然,以這種方式比較字符串沒有多大意義。 但這在技術上是可能的。 ## PHP 賦值,相等和身份 您可能會注意到,有一個符號運算符`=`,兩個符號運算符`==`和三個符號`===`運算符。 現在我們將討論這些運算符之間的區別。 一個符號`=`運算符是賦值運算符。 它將值加載到變量。 ```php php > $a = 6; php > echo $a; 6 ``` 在示例中,我們為`$a`變量分配值 6。 `$a`變量現在包含數字 6。 我們可以使用`echo`命令顯示`$a`變量的內容。 兩個符號`==`運算符是寬松相等運算符。 它用于測試所討論的值是否相等。 請注意,使用此運算符時,PHP 解釋器會進行一些隱式轉換。 這導致一些非直覺的結果。 ```php php> var_dump(false == 0); bool(true) php> var_dump(false == array()); bool(true) php> var_dump(true == 1); bool(true) php> var_dump(true == "string"); bool(true) php> var_dump(117 == "000117"); bool(true) ``` 對于許多來自其他語言的程序員,初學者或程序員來說,這些結果可能令人驚訝。 如果將數字與字符串進行比較,或者比較涉及數字字符串,則每個字符串都將轉換為數字,然后以數字方式進行比較。 三個符號`===`運算符是嚴格比較運算符。 它稱為身份運算符。 僅當操作數的值相同且類型相同時,此運算符才返回`true`。 ```php php> var_dump(false === 0); bool(false) php> var_dump(false === array()); bool(false) php> var_dump(true === 1); bool(false) php> var_dump(true === "string"); bool(false) php> var_dump(117 === "000117"); bool(false) ``` 如我們所見,身份運算符返回相反的結果。 該運算符更直觀,使用更安全。 ## PHP 按位運算符 小數對人類是自然的。 二進制數是計算機固有的。 二進制,八進制,十進制或十六進制符號僅是數字符號。 按位運算符使用二進制數的位。 我們還有二進制邏輯運算符和移位運算符。 很少在高級語言(如 PHP)中使用按位運算符。 | 符號 | 含義 | | --- | --- | | `~` | 按位取反 | | `^` | 按位異或 | | `&` | 按位與 | | <code>&#124;</code> | 按位或 | | `<<` | 左移 | | `>>` | 右移 | 按位取反運算符分別將 1 更改為 0,將 0 更改為 1。 ```php php> print ~7; -8 php> print ~-8; 7 ``` 運算符恢復數字 7 的所有位。這些位之一還確定數字是否為負。 如果我們再一次對所有位取反,我們將再次得到 7。 按位,運算符在兩個數字之間進行逐位比較。 僅當操作數中的兩個對應位均為 1 時,位位置的結果才為 1。 ```php 00110 & 00011 = 00010 ``` 第一個數字是二進制符號 6,第二個數字是 3,結果是 2。 ```php php> print 6 & 3; 2 php> print 3 & 6; 2 ``` 按位或運算符在兩個數字之間進行逐位比較。 如果操作數中的任何對應位為 1,則位位置的結果為 1。 ```php 00110 | 00011 = 00111 ``` 結果為`00110`或十進制 7。 ```php php> print 6 | 3; 7 ``` 按位互斥或運算符在兩個數字鍵之間執行逐位比較。 如果操作數中對應位中的一個或另一個(但不是全部)為 1,則位位置的結果為 1。 ```php 00110 ^ 00011 = 00101 ``` 結果為`00101`或十進制 5。 ```php php> print 6 ^ 3; 5 ``` 最后,我們還有按位移位運算符。 按位移位運算符向右或向左移位。 ```php number << n : multiply number 2 to the nth power number >> n : divide number by 2 to the nth power ``` 這些運算符也稱為算術移位。 ```php 00110 >> 00001 = 00011 ``` 我們將數字 6 的每個位向右移動。 等于將 6 除以 2。結果為`00011`或十進制 3。 ```php php> print 6 >> 1; 3 ``` ```php 00110 << 00001 = 01100 ``` 我們將數字 6 的每個位向左移動。 等于將數字 6 乘以 2。結果為`01100`或十進制 12。 ```php php> print 6 << 1; 12 ``` ## PHP 復合賦值運算符 復合賦值運算符由兩個運算符組成。 他們是速記員。 ```php php> $i = 1; php> $i = $i + 1; php> print $i; 2 php> $i += 1; php> print $i; 3 ``` `+=`復合運算符是這些速記運算符之一。 它們比完整的表達式可讀性差,但是經驗豐富的程序員經常使用它們。 其他復合運算符是: ```php -= *= .= /= %= &= |= ^= >>= <<= ``` ## PHP 運算符優先級 運算符優先級告訴我們首先求值哪個運算符。 優先級對于避免表達式中的歧義是必要的。 以下表達式 28 或 40 的結果是什么? ```php 3 + 5 * 5 ``` 像數學中一樣,乘法運算符的優先級高于加法運算符。 結果是 28。 ```php (3 + 5) * 5 ``` 要更改求值順序,可以使用方括號。 方括號內的表達式始終首先被求值。 以下列表顯示了按優先級排序的常見 PHP 運算符(優先級最高): | 運算符 | 描述 | | --- | --- | | `++ --` | 增減 | | `(int) (float) (string) (array) (object) (bool)` | 轉型 | | `!` | 邏輯非 | | `* / %` | 算術 | | `+ - .` | 算術和字符串 | | `<< >>` | 按位 | | `< <= > >= <>` | 比較 | | `== != === !==` | 比較 | | `&&` | 邏輯“與” | | <code>&#124;&#124;</code> | 邏輯或 | | `? :` | 三元運算符 | | `= += -= *= /= .= %=` | 賦值 | | `and` | 邏輯與 | | `xor` | 邏輯異或 | | `or` | 邏輯或 | | `,` | 逗號運算符 | 列表中同一行上的運算符具有相同的優先級。 `precedence.php` ```php <?php print 3 + 5 * 5; print "\n"; print (3 + 5) * 5; print "\n"; var_dump(! True or True); var_dump(! (True or True)); ``` 在此代碼示例中,我們顯示一些常見的表達式。 每個表達式的結果取決于優先級。 ```php var_dump(! True or True); ``` 在這種情況下,否定運算符具有更高的優先級。 首先,將第一個`True`值取反為`False`,然后 OR 運算符組合`False`和`True`,最后得到`True`。 ```php $ php precedence.php 28 40 bool(true) bool(false) ``` 關系運算符的優先級高于邏輯運算符。 `positive.php` ```php <?php $a = 1; $b = 2; if ($a > 0 and $b > 0) { echo "\$a and \$b are positive integers\n"; } ``` 和運算符等待兩個布爾值。 如果其中一個操作數不是布爾值,則會出現語法錯誤。 ```php $ php positive.php $a and $b are positive integers ``` ## PHP 關聯規則 有時,優先級不能令人滿意地確定表達式的結果。 還有另一個規則稱為關聯性。 運算符的關聯性確定優先級與相同的運算符的求值順序。 ```php 9 / 3 * 3 ``` 此表達式的結果是 9 還是 1? 乘法,刪除和模運算符從左到右關聯。 因此,該表達式的計算方式為:`(9 / 3) * 3`,結果為 9。 算術,布爾,關系和按位運算符都是從左到右關聯的。 另一方面,賦值運算符是正確關聯的。 ```php php> $a = $b = $c = $d = 0; php> echo $a, $b, $c, $d; 0000 ``` 如果關聯從左到右,則以前的表達式將不可能。 復合賦值運算符從右到左關聯。 ```php php> $j = 0; php> $j *= 3 + 1; php> print $j; 0 ``` 您可能期望結果為 1,但是由于關聯性,實際結果為 0。 首先求值右邊的表達式,然后應用復合賦值運算符。 ## PHP 中的其他運算符 PHP 具有沉默(`@`)運算符。 它用于關閉錯誤消息。 它通常與網絡或數據庫連接一起使用。 請謹慎使用此運算符,因為它可能導致調試問題。 ```php php> echo 3 / 0; Warning: Division by zero in php shell code on line 1 php> echo @ (3 / 0); php> ``` 在第一種情況下,我們收到除以零的錯誤消息。 在第二種情況下,`@`運算符將關閉錯誤消息。 引用(&)運算符。 它創建對對象的引用。 ```php php> $a = 12; php> $b = &$a; php> echo $b; 12 php> $b = 24; php> echo $b; 24 php> echo $a; 24 ``` 在上面的示例中,我們將值傳遞給`$a`變量,并將對`$a`的引用傳遞給`$b`變量。 ```php php> $b = &$a; ``` 我們創建一個指向`$a`變量的新變量`$b`。 換句話說,我們為`$a`變量創建一個別名。 ```php php> $b = 24; php> echo $b; 24 php> echo $a; 24 ``` 為`$b`分配新值也會影響`$a`。 反引號(`)運算符用于執行命令。 它與`shell_exec()`函數調用相同。 ```php php> $list = `ls -l | head -3`; php> echo $list; total 52 -rw-rw-r-- 1 janbodnar janbodnar 130 Jan 19 11:35 andop.php -rw-rw-r-- 1 janbodnar janbodnar 140 Jan 19 11:21 arithmetic.php ``` 我們執行`ls`命令,該命令在 Unix 系統上列出當前目錄的內容。 在 PHP 教程的這一部分中,我們介紹了 PHP 運算符。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看