一、變數和常量
1.1、變數名(標示符)
1)變數:$開頭標誌
2)變數名:可以由字母,數字,_ 3者組成,不能用數字開頭
3)標識符是區分大小寫,但函數名不區分大小寫。
4)變數名稱可以與函數名稱相同,雖然是允許的,但應盡量避免混淆。
PHP不要求在使用變數之前聲明變數,當第一次給一個變數賦值時,才建立了這個變數。
例如:
$3age;//錯$_ = 6;//可以$*p = 30;//錯
1.2、資料類型
1) Integer: 用來表示整數。
2) Float: 用來表示所有實數。
3) String: 用來表示字串。
4) Boolean: 用來表示true或false。
5) Array: 用來儲存具有相同類型的多個資料項目。
6) Object: 用來儲存類的執行個體。
PHP可以在任何時間根據儲存在變數中的值來確定變數的類型,當需要強制類型轉換時可以按照java的文法來轉換
例如:
$icount = 0;$fcount = (float)$icount;
1.3、常量的定義
常量可以儲存一個值,但是程式一旦初始化之後,常量的值就不能改變。
define('PI', 3.14159);echo PI;
常量一般用大寫表示,用define函數定義,並且不用$符號標識。
1.4、變數範圍
範圍指在一個指令碼中某個變數可以使用或可見的範圍,PHP具有6項基本的範圍規則。
1) 內建超級全域變數可以在指令碼中的任何地方使用。
例如:
$GLOBALS: 所有全域變數數組。$_SERVER: 伺服器環境變數數組$_GET: GET方法傳遞給該指令碼的變數數組$_POST: POST方法傳遞給該指令碼的變數數組$_COOKIE: cookie變數數組$_FILES: 與檔案上傳相關的變數數組$_ENV: 環境變數數組$_REQUEST: 所有使用者輸入的變數資料,包括$_GET、$_POST和$_COOKIE$_SESSION: 會話變數數組
2) 常量一旦被聲明,可以在全域可見。
3) 在指令碼中聲明的全域變數在全指令碼中是可見的。
4) 函數內部使用的變數聲明為全域變數時,名稱要與全域變數名稱一致。
5) 函數內部建立並聲明為靜態變數在函數外不可見,但在函數的多次執行過程中保持該值。
6) 函數內部建立的變數是本地的,當函數終止時,該變數也就不存在。
二、運算子或操作符
2.1、算數運算子
算術操作符也就是數字操作符,通常用於整型或雙精確度類型的資料。如果應用在字串中,PHP會試圖將這些字元轉換成一個數字,如果其中包含"e"或"E",它會被當作是科學標記法並被轉換成浮點數,否則將會被轉換成整數。PHP會在字串開始處尋找數字,並且使用這些數字作為該字串的值,如果沒有找到數字,則該字串的值為0。
| 操作符 |
名稱 |
樣本 |
| + |
加 |
$a + $b |
| - |
減 |
$a - $b |
| * |
乘 |
$a * $b |
| / |
除 |
$a / $b |
| % |
模 |
$a % $b |
2.2、字串串連
利用“.”
$string = "hello"." world";
2.3、賦值運算
複合賦值操作符
| 操作符 |
使用方法 |
等價於 |
| += |
$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 |
| .= |
$a .= $b |
$a = $a . $b |
2.4、引用
引用操作符"&"可以在關聯賦值中使用。引用相當於一個別名,而不是一個指標,它使兩個變數指向相同的記憶體位址,可以使用unset來重設
例如:
$a = 1;$b = &$a;$b = 2;unset($a);
2.5、比較運算
比較操作符
| 操作符 |
名稱 |
使用方法 |
| == |
等於 |
$a == $b |
| === |
恒等 |
$a === $b |
| != |
不等 |
$a != $b |
| !== |
不恒等 |
$a !== $b |
| <> |
不等 |
$a <> $b |
| < |
小於 |
$a < $b |
| > |
大於 |
$a > $b |
| <= |
小於等於 |
$a <= $b |
| >= |
大於等於 |
$a >= $b |
2.6、邏輯運算
邏輯操作符
| 操作符 |
名稱 |
使用方法 |
| ! |
非 |
!$b |
| && |
與 |
$a && $b |
| || |
或 |
$a || $b |
| and |
與 |
$a and $b |
| or |
或 |
$a or $b |
| xor |
異或 |
$a xor $b |
2.7、位元運算
位操作符
| 操作符 |
名稱 |
使用方法 |
| & |
按位與 |
$a & $b |
| | |
按位或 |
$a | $b |
| ~ |
按位非 |
~$a |
| ^ |
按位異或 |
$a ^ $b |
| << |
左位移 |
$a << $b |
| >> |
右位移 |
$a >> $b |
2.8、其他
1) 逗號操作符
逗號操作符","用來分隔函數參數和其他清單項目,這個操作符經常被附帶使用。
2) 類操作符
"new"和"->"分別用來初始化類的執行個體和訪問類的成員。
3) 三元操作符
三元操作符"? :"類似於條件陳述式if-else的運算式版本,文法格式如下:
condition ? value if true : value if false
4) 錯誤抑制符
錯誤抑制符"@"可以在任何錶達式前使用,使用這個操作符,可以抑制代碼產生的警告。
5) 執行操作符
執行操作符是一對操作符,它是一對反向單引號"` `",PHP將試著將反向單引號之間的命令當作伺服器端的命令列來執行,運算式的值就是命令的執行結果,例如:
echo `ls -l`;
6) 類型操作符
"instanceof"操作符允許檢查一個對象是否是特定類的執行個體,例如:
if ($object instanceof sampleClass) echo "Object is an instance of sampleClass";
2.9、操作符優先順序以及結合性
由低到高如下:
操作符優先順序
| 結合性 |
操作符 |
| 左 |
, |
| 左 |
or |
| 左 |
xor |
| 左 |
and |
| 右 |
print |
| 左 |
= += -= *= /= .= %= &= != ^= ~= <<= >>= |
| 左 |
? : |
| 左 |
|| |
| 左 |
&& |
| 左 |
! |
| 左 |
^ |
| 左 |
& |
| 不相關 |
== != === !== |
| 不相關 |
< <= > >= |
| 左 |
<< >> |
| 左 |
+ - . |
| 左 |
* / % |
| 右 |
! ~ ++ -- (type) @ |
| 右 |
[ ] |
| 不相關 |
new |
| 不相關 |
() |
三、測試函數與測試變數
3.1、PHP提供了特定類型的測試函數。
例如:
1) is_array(): 檢查變數是否是數組。
2) is_double()、is_float()、is_real(): 檢查變數是否是浮點數,所有函數相同。
3) is_long()、is_int()、is_integer(): 檢查變數是否是整數,所有函數相同。
4) is_string(): 檢查變數是否是字串。
5) is_bool(): 檢查變數是否是布爾值。
6) is_object(): 檢查變數是否是一個對象。
7) is_resource(): 檢查變數是否是一個資源。
8) is_null(): 檢查變數是否為null。
9) is_scalar(): 檢查變數是否是標量,即整數、布爾值、字串或浮點數。
10) is_numeric(): 檢查變數是否是數字或數字字串。
11) is_callable(): 檢查變數是否是有效函數名稱。
3.2、測試變數狀態
PHP有幾個函數用來測試變數狀態。
例如:
1) isset()
bool isset(mixed var[, mixed var[, ...]])
issset()需要一個變數作為參數,如果這個變數存在,則返回true,否則返回false。也可以傳遞一個由逗號間隔的變數列表,如果所有變數都被設定了,即返回true。
還可以使用與isset()相對應的unset()來銷毀一個變數:
void unset(mixed var[, mixed var[, ...]])
2) empty()
bool empty(mixed var)
empty()可以用來檢查一個變數是否存在,以及它的值是否為非空和非0,相應的傳回值為true或false。
四、控制語句
4.1、if else
if (condition) { expression;}elseif (condition) { expression;}else { expression;}
4.2、switch
switch (expression) { case value1: expression; break; case value2: expression; break; defalut: expression; break;}
switch語句工作方式類似於if語句,但是它允許條件可以有多於兩個的可能值。在switch語句中,只要條件是一個簡單的資料類型,可以提供一個case語句來處理每一個條件值,並且提供相應的動作代碼,此外還有一個預設的case條件來處理沒有提供特定值的情況。
當switch語句中的特定case被匹配時,PHP將執行該case下的代碼,直至遇到break語句,如果沒有break語句,switch將執行這個case以下所有值為true的case中的代碼。
4.3、while
while (condition) { expression;}
4.4、for
for (expression1; condition; expression2) { expression3;}
expression1在開始時只執行一次,通常在這裡設定計數器的初始值。在每一次迴圈開始之前,condtion運算式將被測試,如果運算式的值為false,迴圈將結束。expression2在每一次迴圈結束時執行,通常在這裡調整計數器的值。expression3在每一次迴圈中執行一次。
4.5、do while
do { expression;}while (condition);
4.6、跳出控制結構
如果希望停止一段代碼的執行,可以有3種方法。
1) 如果希望終止一個迴圈,可以使用break語句,指令碼會從迴圈體後面的第一條語句開始執行。
2) 如果希望跳到下一次迴圈,可以使用continue語句。
3) 如果希望結束整個PHP指令碼的執行,可以使用exit語句。