PHP入門之類型與運算符(一)
前言
PHP對於大部分人來說,是比較容易入門的。筆者也是剛學習不久,所以就把自己學習的基礎知識進行總結和整理。第一部分是類型與運算符。如果你想學習PHP,可以參考PHP學習手冊學習,任何一本教學資料也沒有PHP學習手冊講的詳細。傳送門(提取碼2dq2): PHP學習手冊
類型
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 來表示。可以用下面的代碼證明一下。
<?php $a=12345; echo "a的值爲".$a; echo '</br>'; echo "字節爲".PHP_INT_SIZE; echo '</br>'; echo "最大值爲".PHP_INT_MAX; echo '</br>'; echo var_dump($a); ?>
運行結果爲:
如果給定的一個整數,溢出了整數的範圍,將直接會解釋成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'; }
||和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'; }
字符串運算符
有兩個字符串(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,'<br/>','$b='.$b,'<br/>',$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學習手冊,按照優先級,由高到低列出下表。
小結
第一部分總結了PHP的一些數據類型和運算符。在下一部分中,會總結一些流程控制,包括分支控制、循環控制等。