1. 程式人生 > >PHP入門之型別與運算子(一)

PHP入門之型別與運算子(一)

#前言 PHP對於大部分人來說,是比較容易入門的。筆者也是剛學習不久,所以就把自己學習的基礎知識進行總結和整理。第一部分是型別與運算子。如果你想學習PHP,可以參考PHP學習手冊學習,任何一本教學資料也沒有PHP學習手冊講的詳細。傳送門(提取碼2dq2):[PHP學習手冊](https://pan.baidu.com/s/14CdfXVeFVDcVvaEDVAeCKg) #型別 PHP支援8種原始型別,包括boolean(布林型)、integer(整型)、float(浮點型,也稱作 double)、string(字串)、array(陣列)、object(物件)、resource(資源)、NULL(無型別),還有三種偽型別。這裡主要講解前四種標量型別。PHP不用提前定義資料型別,它會自己識別。 ##整型 整型數的字長和平臺有關,儘管通常最大值是大約二十億(32 位有符號)。64 位平臺下的最大值通常是大約 9E18。PHP 不支援無符號整數。Integer 值的字長可以用常量 PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5後,最大值可以用常量 PHP_INT_MAX 來表示。可以用下面的程式碼證明一下。 ``` '; echo "位元組為".PHP_INT_SIZE; echo '
'; echo "最大值為".PHP_INT_MAX; echo '
'; echo var_dump($a); ?> ``` 執行結果為: ![](https://img2020.cnblogs.com/blog/1996712/202007/1996712-20200726082740109-1794700472.png) 如果給定的一個整數,溢位了整數的範圍,將直接會解釋成float。 ##布林型 布林型細節 最簡單的型別,true和false代表真和假。 當轉換為 布林 時,以下值被認為是 false: • 布林值 false 本身 • 整型值 0(零) • 浮點型值 0.0(零) • 空字串,以及字串 "0" • 不包括任何元素的陣列 • 不包括任何成員變數的物件(僅 PHP 4.0 適用) • 特殊型別 NULL(包括尚未賦值的變數) • 從空標記生成的 SimpleXML 物件 **除了上面那些,其他的所有值都會被認為是true。** ##浮點型 精度為14個位元組,從左邊不是零的一個開始算起。 比如、 $a=0.123444555666666666; echo "a的值為".$a; 輸出的值為:a的值為0.12344455566667 當到第14位數時,它會自動四捨五入。 ##字元型 字元型最大可以達到 2GB。 需要注意的一點是區分單引號和雙引號。用雙引號定義的字串最重要的特徵是變數會被解析。舉個例子。 ``` $b=123; echo "hello$b"; echo 'hello$b'; #結果為 hello123 hello$b ``` #運算子 運算子是可以通過給出的一或多個值(用程式設計行話來說,表示式)來產生另一個值(因而整個結構成為一個表示式)的東西。下面對幾種常用的運算子進行詳細說明。 ##遞增/遞減運算子 舉個例子 ``` $i=10; $i=++$i; # ++在前,先++然後在賦值。所以輸出的結果為11. $i=i++; # ++在後,先賦值,然後在++。所以輸出的值為10. //這裡注意的是,++和--的物件是變數!!比如$a=++3就是錯的!! echo 'i的值為'.$i ``` --i和i--同樣的道理。 ##算術運算子 $a + $b 加法 $a 和 $b 的和。 $a - $b 減法 $a 和 $b 的差。 $a * $b 乘法 $a 和 $b 的積。 $a / $b 除法 $a 除以 $b 的商。 $a % $b 取模 $a 除以 $b 的餘數。 這些就不舉例子了。還有$a+、$a-、$a*、$a/、$a%、(左加、左減、左乘、左除、左取餘)。 舉個例子。 ``` $a=10; $a-=2; echo 'a的值為'.$a; #執行結果為:a的值為8 $a-=2就相當於$a=10-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小於、等於、大於than $b時分別返回一個小於、等於、大於0的integer 值。 PHP7開始提供. $a ?? $b ?? $c NULL 合併操作符 從左往右第一個存在且不為 NULL 的運算元。如果都沒有定義且不為 NULL,則返回 NULL。PHP7開始提供 ##邏輯運算子 * $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。 and 和 &&都是邏輯與,區別是&&優先順序高於and,and的優先順序比賦值運算子還要低。 舉個例子。 ``` $a= false&&true; $b= true and false; var_dump($a,$b); #執行結果:bool(false) bool(true) $a=false$b=true if ($a==false){ #因為,and的優先順序低於“=”所以$b先進行了賦值。 echo '$a=false'; } if ($b==true){ echo '$b=true'; } ``` ![](https://img2020.cnblogs.com/blog/1996712/202007/1996712-20200726102726609-740388173.png) ||和or都是邏輯或,區別是||優先順序高於or,or的優先順序比賦值運算子還要低。 舉個例子。 ``` $a= true||false; $b= false or true; var_dump($a,$b); #執行結果:bool(true) bool(false) $a=true$b=false if ($a==true){ #因為,or的優先順序低於“=”所以$b先進行了賦值。 echo '$a=true'; } if ($b==false){ echo '$b=false'; } ``` ![](https://img2020.cnblogs.com/blog/1996712/202007/1996712-20200726102821077-1833439352.png) ##字串運算子 有兩個字串(string)運算子。第一個是連線運算子("."),它返回其左右引數連線後的字串。第二個是連線賦值運算子(".="),它將右邊引數附加到左邊的引數之後。 舉個例子。 ``` $a = "Hello "; #執行結果為 Hello World! $b = $a . "World!"; echo "$b"; $a = "Hello "; $a .= "World!"; #執行結果為 Hello World! echo "$a"; ``` 這裡不僅可以連線字串,如果是數字的話也會當作字串去連線。 比如 $a=123;$b=456;echo $a.$b; 結果為:123456 ##三元運算子 格式:表示式1?表示式2:表示式3 含義:如果表示式1為真,執行表示式2,如果表示式1為假,則執行表示式3。 舉個例子: ``` $a=2; $b=3; $c=$a<$b?"b大於a":"a大於b"; echo '$a='.$a,'
','$b='.$b,'
',$c; #表示式2和表示式3可以是數,也可以是字串,也可以是一個式子。 ``` 輸出結果為: $a=2 $b=3 b大於a ##型別運算子 instanceof 用於確定一個 PHP 變數是否屬於某一類 class 的例項 舉個例子 class A{} class B{} $a=new A; var_dump($a instanceof A); var_dump($a instanceof B); 輸出結果為: bool(true) bool(false) //第一個為真,第二個為假。所以$a屬於A類。 ##運算子優先順序 這裡直接參考的PHP學習手冊,按照優先順序,由高到低列出下表。 ![](https://img2020.cnblogs.com/blog/1996712/202007/1996712-20200726104453427-1159772062.png) #小結 第一部分總結了PHP的一些資料型別和運算子。在下一部分中,會總結一些流程控制,包括分支控制、迴圈控