PHP入門之型別與運算子(一)
阿新 • • 發佈:2020-07-26
#前言
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的一些資料型別和運算子。在下一部分中,會總結一些流程控制,包括分支控制、迴圈控
',$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的一些資料型別和運算子。在下一部分中,會總結一些流程控制,包括分支控制、迴圈控