1. 程式人生 > 其它 >4.運算子和流程控制

4.運算子和流程控制

運算子

在 PHP 中,賦值運算子 = 用於給變數賦值。

在 PHP 中,算術運算子 + 用於把值加在一起

1.算數運算子

運算子 名稱 描述 例項 結果
x + y x 和 y 的和 2 + 2 4
x - y x 和 y 的差 5 - 2 3
x * y x 和 y 的積 5 * 2 10
x / y x 和 y 的商 15 / 5 3
x % y 模(除法的餘數) x 除以 y 的餘數 5 % 2 10 % 8 10 % 2 1 2 0
- x 取反 x 取反 <?php $x =2; echo -$x; ?> -2
a . b 並置 連線兩個字串 "Hi" . "Ha" HiHa
<?php
    
    // 取餘
	echo 10 % 3      // 返回10/3的餘數  1
    
    // 取反
    $x =2; 
	echo -$x;       // -1
	
	//並置
	echo 'hello '.'word'   // hello word
    
?>

2.賦值運算子

在 PHP 中,基本的賦值運算子是 "="。它是左運算元被設定為右側表示式的值。也就是說,"$x = 5" 的值是 5。

運算子 等同於 描述
x = y x = y 左運算元被設定為右側表示式的值
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y 模(除法的餘數)
a .= b a = a . b 連線兩個字串
<?php 
$x=10; 
echo $x; // 輸出10
 
$y=20; 
$y += 100;
echo $y; // 輸出120
 
$z=50;
$z -= 25;
echo $z; // 輸出25
 
$i=5;
$i *= 6;
echo $i; // 輸出30
 
$j=10;
$j /= 5;
echo $j; // 輸出2
 
$k=15;
$k %= 4;
echo $k; // 輸出3

$x="Hello";
$x .= " world!";
echo $x; // 輸出Hello world!
?>

3.遞增/遞減運算子

運算子 名稱 描述
++ x 預遞增 x 加 1,然後返回 x
x ++ 後遞增 返回 x,然後 x 加 1
-- x 預遞減 x 減 1,然後返回 x
x -- 後遞減 返回 x,然後 x 減 1
<?php
$x=10; 
echo ++$x; // 輸出11
 
$y=10; 
echo $y++; // 輸出10
 
$z=5;
echo --$z; // 輸出4
 
$i=5;
echo $i--; // 輸出5
?>

4.比較運算子

比較操作符可以讓您比較兩個值:

運算子 名稱 描述 例項
x == y 等於 如果 x 等於 y,則返回 true 5==8 返回 false
x === y 絕對等於 如果 x 等於 y,且它們型別相同,則返回 true 5==="5" 返回 false
x != y 不等於 如果 x 不等於 y,則返回 true 5!=8 返回 true
x <> y 不等於 如果 x 不等於 y,則返回 true 5<>8 返回 true
x !== y 絕對不等於 如果 x 不等於 y,或它們型別不相同,則返回 true 5!=="5" 返回 true
x > y 大於 如果 x 大於 y,則返回 true 5>8 返回 false
x < y 小於 如果 x 小於 y,則返回 true 5<8 返回 true
x >= y 大於等於 如果 x 大於或者等於 y,則返回 true 5>=8 返回 false
x <= y 小於等於 如果 x 小於或者等於 y,則返回 true 5<=8 返回 true

5.邏輯運算子

運算子 名稱 描述
x and y 如果 x 和 y 都為 true,則返回 true
x or y 如果 x 和 y 至少有一個為 true,則返回 true
x xor y 異或 如果 x 和 y 有且僅有一個為 true,則返回 true
x && y 如果 x 和 y 都為 true,則返回 true
x || y 如果 x 和 y 至少有一個為 true,則返回 true
! x 如果 x 不為 true,則返回 true

6.運算子優先順序

下表按照優先順序從高到低列出了運算子。同一行中的運算子具有相同優先順序,此時它們的結合方向決定求值順序。

說明:左 = 從左到右,右 = 從右到左。

結合方向 運算子 附加資訊
clone new clone 和 new
[ array()
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 型別和遞增/遞減
instanceof 型別
! 邏輯運算子
* / % 算術運算子
+ – . 算術運算子和字串運算子
<< >> 位運算子
== != === !== <> 比較運算子
& 位運算子和引用
^ 位運算子
| 位運算子
&& 邏輯運算子
|| 邏輯運算子
? : 三元運算子
= += -= *= /= .= %= &= |= ^= <<= >>= => 賦值運算子
and 邏輯運算子
xor 邏輯運算子
or 邏輯運算子
, 多處用到

運算子優先順序中,or 和 ||,&& 和 and 都是邏輯運算子,效果一樣,但是其優先順序卻不一樣。

7.括號的使用

我們通過括號的配對來明確標明運算順序,而非靠運算子優先順序和結合性來決定

你可以認為括號的優先順序高於它們

<?php
// 括號優先運算
 
$a = 1;
$b = 2;
$c = 3;
$d = $a + $b * $c;
echo $d;
echo "\n";
$e = ($a + $b) * $c;  // 使用括號
echo $e;
echo "\n";
?>

8.三元運算子

語法: 條件?條件為真執行的程式碼:條件為假執行的程式碼

<?php
	$x = false;
	$y = true;
	echo $x;    // 0
	echo $y;    // 1
	$x?$x='真':$x='假';
	$y?$y='真':$y='假';
	echo $x;   // 假
	echo $y;   // 真
?>

9.其他運算子

符號資訊 說明
``反引號 反引號中間插入程式碼,執行系統命令,等價於shell_exec函式
@ 表示抑制錯誤,把這一行的錯誤不讓它顯示出來了,效率低不建議用
=> 陣列下標訪問符
-> 物件訪問符
instanceof 判斷某個物件是否來自某個類,如果是的返回true,如果不是返回false
必會: ``  反引號中間插入程式碼,執行系統命令,等價於shell_exec函式
<?php
	echo `ipconfig`   // 列印本機的IP地址資訊
?>

流程控制

條件語句用於根據不同條件執行不同動作。

當你編寫程式碼時,您常常需要為不同的判斷執行不同的動作。您可以在程式碼中使用條件語句來完成此任務。

在 PHP 中,提供了下列條件語句:

  • if 語句 - 在條件成立時執行程式碼
  • if...else 語句 - 在條件成立時執行一塊程式碼,條件不成立時執行另一塊程式碼
  • if...elseif....else 語句 - 在若干條件之一成立時執行一個程式碼塊
  • switch 語句 - 在若干條件之一成立時執行一個程式碼塊

1.if 語句

if 語句用於僅當指定條件成立時執行程式碼

語法 :

if (條件) {
  當條件為 true(真) 時執行的程式碼;
}

舉例:

<?php  $sex = 'boy';  if($sex = 'boy' ){      echo '男孩子在外面要保護好自己';  }?>

2.if-else

在條件成立時執行一塊程式碼,條件不成立時執行另一塊程式碼,請使用 if....else 語句。

語法:

if (條件) {  條件為 true 時執行的程式碼;} else {  條件為 false 時執行的程式碼;}

舉例

<?php  $sex = 'boy';  if($sex = 'boy' ){      echo '男孩子在外面要保護好自己';  }else{      echo '不要相信男人說的話';  }?>

3.iif...elseif....else

在若干條件之一成立時執行一個程式碼塊,請使用if...elseif...else語句。.

語法:

if (條件){    if 條件成立時執行的程式碼;}elseif (條件){    elseif 條件成立時執行的程式碼;}else{    條件不成立時執行的程式碼;}

舉例:

<?php  $dida = rand(0,23);   // 獲取一個0-23之間的隨機數,包括23  echo "當前時間為 $dida 點\n";  if($dida > 6 && $dida < 10 ){      echo '豆漿油條';  }elseif ($dida > 10 && $dida < 14){      echo '吃蘭州拉麵';  }elseif ($dida >= 14 && $dida < 22){      echo '正規按摩';  }elseif ($dida > 22 && $dida <=23){      echo '打打遊戲';  }elseif ($dida >=1 && $dida <3){      echo '吃吃夜宵';  }else{      echo '睡覺或者工作中';  }?>

4.switch

如果您希望有選擇地執行若干程式碼塊之一,請使用switch語句

語法 :

<?php    switch (n)    {    case 值1:        如果 n=值1,此處程式碼將執行;        break;    case 值1:        如果 n=值1,此處程式碼將執行;        break;    default:        如果 n 既不等於 值1 也不等於 值1,此處程式碼將執行;    }	 // case 值,後面緊跟的不是分號是:(冒號)	//  每個case下面必須有break	// default 可以不寫?>

工作原理:首先對一個簡單的表示式 n(通常是變數)進行一次計算。將表示式的值與結構中每個 case 的值進行比較。如果存在匹配,則執行與 case 關聯的程式碼。程式碼執行後,使用 break 來阻止程式碼跳入下一個 case 中繼續執行。default 語句用於不存在匹配(即沒有 case 為真)時執行。

舉例 :

$rubbish_category = '溼垃圾';switch ($rubbish_category) {    case '不可回收垃圾':        echo '去A垃圾桶';        break;    case '可回收垃圾':        echo '去B垃圾桶';        break;    case '幹垃圾':        echo '去C垃圾桶';        break;    case '溼垃圾':        echo '去D垃圾桶';        break;    default:        echo '你到底是什麼垃圾???';}?>

注意 : 如果不寫break,會從匹配到的第一個case後,一直執行到第一個break,中間就算有case也不會匹配了

直接執行case裡面的程式碼,如果一直沒有break,會執行到default下方程式碼結束,如果default也沒有就會執行匹

配到的case語句下所有的程式碼,一直到switch語句結束。