天天看點

自學PHP筆記(五) PHP運算符

首先我們需要了解運算符是什麼,運算符是指的對變量、常量或者資料進行計算的一個符号,比如數學中學到的加減乘除等用來運算的代表符号,PHP中的運算符也是這樣的,它可以通過一個或者多個值産生一個新的值,這就是運算符的作用,PHP中把運算符分為:算數運算符、指派運算符、字元串運算符、位運算符、比較運算符、邏輯運算符、錯誤控制運算符和其他運算符。下面将對一系列運算符進行說明

1.算數運算符

算數運算符也就是我們數學公式中學到的四則運算符,也就是加減乘除,算數運算符主要用來數學計算

算數運算符 說明
- 減法,在某些特殊場合會用于取反,比如數值的負值
+ 加法
* 乘法
/ 除法
% 取餘,也就是擷取除法中的餘數

【示例】

<?php
	$a = 100;
	$b = 200;
	echo $a * $b;
	echo $b / $a;
?>
           

運算結果分别為:

20000

2

2.指派運算符

基本指派運算符隻有一個就是用

=

表示,這個指派運算符就是把右邊的表達式賦給左邊的運算符,也就是将左右兩邊的表達式相等,寫法也就是常用變量指派的方法

【示例】

<?php
	$a = 100;
	$b = $a + 100;
	echo $a;
	echo $b;
?>
           

輸出結果分别為:

100

200

,可以看出

$b

變量被指派變量

a

加上100,最後變量

b

的值為

200

指派運算符除了基本的指派運算符外,還有用于二進制算數、數組集合和字元串運算的組合運算符,這裡解釋下什麼是二進制運算符:由兩個元素形成第三個元素的一種規則,例如數的加法及乘法;更一般地,由兩個集合形成第三個集合的産生方法或構成規則稱為二次運算。這個是官方說法,其實就可以了解為兩個或者多個表達式用運算符生成另外一個表達式,這就二次運算。

組合運算符 示例
.= 先連接配接後指派 $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
<?php
	$a = 100;
	$b = 200;
	$a += $b;
	echo $a;
?>
           

輸出結果為:

300

3. 字元串運算符

字元串運算符一開始我在想字元串還能運算?難不成還能A+B=C啊,後來通過一步步了解發現并不是那麼回事,字元串的運算符就是将多個不同的字元表達式連接配接到一起,也就是将兩個值進行合并。

字元串運算符隻有兩個,一個是

.

連接配接運算符,也就是将左右兩邊的字元串合表達式并為一個字元串表達式。另外一個就是連接配接指派運算符,這個類似于組合運算符符中的先連接配接後指派,使用

.=

進行表示

<?php
	$a = "hello";
	$b = " word";
	echo $a . $b;
	$a .= $b;
	echo $a;
?>
           

輸出結果是一緻的,輸出結果為

hello word

4.位運算符

這個我也是沒搞太明白,有知道的大神可以給幾個提示或者說明。下面我把PHP的位運算符做了一個清單:

位運算符
& 按位與(And)
| 按位或(Or)
^ 按位異或(Xor)
~ 按位非(Not)
<< 左移
>> 右移

就這些啦,希望大家可以補充下此欄,私聊發我,我會補充到這裡,提前謝謝大家啦

5.比較運算符

這個比較運算符了解比較簡單,就是将多個表達式進行對比,傳回結果位布爾值,如果比較結果為真則傳回true,如果比較結果為假則傳回false,這個運算符大部分會用在流程控制中,比較表達式。

比較運算符
== 判斷是否相等,注意這個不會判斷資料類型
=== 判斷是否相等,注意資料類型不同也會傳回false
!= 不等于
<>
!== 非全等,注意會判讀資料類型的
< 小于
> 大于
<= 小于等于
>= 大于等于
<=> 組合比較,當左側值大于右側值會傳回大于0的結果,反之則傳回小于0的結果
?? NULL合并操作符,從左往右第一個存在且不為NULL的操作數,如果沒有定義且不為NULL則傳回NULL

【注意】在整數和字元串進行比較時,字元串會被轉換成整數進行比較,比較字元串時,則作為整數進行比較。

<?php
	var_dump(1 == "a");
	var_dump(1==="a");
	var_dump(1!=="a");
?>
           

輸出結果為:第一個輸出結果為

bool(false)

,第二個輸出結果為

bool(false)

,第三個輸出結果為

bool(true)

6.邏輯運算符

這個邏輯運算符用來組合邏輯運算符的結果,每個程式設計語言都離不開的哦,多數用來做判斷,多于流程控制一起使用

邏輯運算符
and 邏輯與,多個表達式都為真才會傳回true
&& 邏輯與,與and一緻
or 邏輯或,多個表達式一個為真就會被認為是真的
|| 邏輯或,與or一緻
xor 邏輯異或,如果一個表達式為真另一個為假,則會傳回true
邏輯非(取反),如果表達式為真,則傳回false

【示例】判斷變量a和b是否都是1

<?php
	$a = 1;
	$b = 2;
	if ($a and $b == 1){
		echo "兩個變量都是1哦";
	}else{
		echo "有一個變量不是1哦";
	}
?>
           

有一個變量不是1哦

7.錯誤控制運算符

這個錯誤控制運算符就是為了不在前端輸出錯誤資訊或者是為了武略某些錯誤而設定的運算符,錯誤運算符時使用

@

表示,隻需要在表達式前面加上錯誤控制運算符即可,如果你激活了

track_errors

特性,則表達式的錯誤資訊都會儲存至

$php_errormsg

變量中。

<?php
	$a =1 / 0;
?>
           

執行上面代碼會産生一個異常報錯,錯誤資訊會在浏覽器中展示,避免這種錯誤資訊展示在浏覽器當中你就可以使用錯誤控制運算符

<?php
	$a = @(1 / 0);
?>
           

執行上面代碼會發現之前在浏覽器當中顯示的錯誤資訊不見了

【注意】錯誤控制運算符隻對表達式有效,如果能從某處擷取到值,就能在他的前面加上錯誤控制運算符,可以把他放在變量、函數、

incloud()

調用、常量等之前,但是要避免把他放在函數或類定義之前,也不能用在條件結構前

8.其他運算符

1. 三元運算符

三元運算符說白了就是

if-else

,也是用來判斷不同的表達式的,唯一不同的就是全寫在一行裡面,不需要分開寫到多行,但是我還是建議大家使用

if-else

結構語句。

【文法】

(expr1)?(expr2):(expr3)
           

**解釋:**當expr1表達式為真時,則執行expr2表達式,并傳回它的值,否則就會執行expr3表達式,并傳回其值。

上面運算也可以直接省略expr2表達式,直接執行expr3。

(expr1) ?: (expr3)
           

**解釋:**當expr1表達式為真時,直接傳回expr1值,否則傳回expr3的值。

【示例】這個示例用來判斷這個相鄰兩個變量的值。

<?php 
	$a = 1;
	$b = 2;
	$c = 3;
	$d = 4;
	echo $a<$b?'A':$b<$c?'B':$c<$d?'C':'D';
?>
           

執行上面代碼傳回值

C

哎最煩解釋這種一行寫下來的條件結構,看起來很複雜,稍不留神就了解不了,下面我拆開給大家看應該就覺得比較簡單了,如果還是覺得很難了解的話,我建議大家直接跳過這一步,直接看後面的

if-else

#第一步判斷$a和$b,傳回結果"A"
echo $a < $b ? 'A' : $b;
#第二步判斷$b和$c,傳回結果"B"
echo $b < $c ? 'B' : $d;
#第三步判斷$c和$d,傳回結果"C"
ehoc $c < $d ? 'C' : 'D';
           

最後給大家上個流程圖吧

Created with Raphaël 2.2.0

開始

$a < $b

$b < $c

$c < $d

C

D

B

A

yes

no

這樣應該看起來就簡單很多了,這樣就友善判斷了,如果還是不行,那就跳過吧,不重要

2. 遞增和遞減運算符

這個遞增和遞減說起來就比較簡單了,比起上面的三元運算簡單多了,遞增就是每執行一次都會加1,遞減就是每執行一次都會減1,這個運算符有下面幾種表示方法。

運算符
++$a 傳回$a+1的值
$a++ 傳回$a的值,然後再加1
–$a 傳回$a-1的值
$a– 傳回$a的值,然後再減1

注意這裡的減号是兩個不是一個

這種遞增遞減的運算符多數用在循環結構當中。

【遞增示例1】

<?php
	for ($i = 0; $i++ < 10;){
		echo $i." ";
	}
?>
           

1 2 3 4 5 6 7 8 9 10

【遞增示例2】

<?php
	for ($i = 0; ++$i < 10;){
		echo $i." ";
	}
?>
           

1 2 3 4 5 6 7 8 9

【遞減示例1】

<?php
	for ($i = 10; $i-- > 1;){
		echo $i." ";
	}
?>
           
<?php
	for ($i = 10; --$i > 1;){
		echo $i." ";
	}
?>
           

9.運算符的優先級和結合方向

繼續閱讀