前言

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的一些數據類型和運算符。在下一部分中,會總結一些流程控制,包括分支控制、循環控制等。

相關文章