PHP基礎知識總結
PHP基礎知識
- PHP 代表 PHP: Hypertext Preprocessor
- PHP 檔案可包含文字、HTML、JavaScript程式碼和 PHP 程式碼
- PHP 程式碼在伺服器上執行,結果以純 HTML 形式返回給瀏覽器
- PHP 檔案的預設副檔名是 ".php"
PHP能做什麼
- PHP 可以生成動態頁面內容
- PHP 可以建立、開啟、讀取、寫入、關閉伺服器上的檔案
- PHP 可以收集表單資料
- PHP 可以傳送和接收 cookies
- PHP 可以新增、刪除、修改您的資料庫中的資料
- PHP 可以限制使用者訪問您的網站上的一些頁面
- PHP 可以加密資料
安裝
如果您的伺服器不支援 PHP,您必須:
- 安裝 Web 伺服器
- 安裝 PHP
- 安裝資料庫,比如 MySQL
官方 PHP 網站(PHP.net)有 PHP 的安裝說明:http://php.net/manual/en/install.php
整合開發環境推薦 WAMP:http://www.wampserver.com/
PHP基本語法
PHP 指令碼可以放在文件中的任何位置。
PHP 指令碼以 <?php 開始,以 ?> 結束:
<!DOCTYPE html> <html> <body> <h1>我的第一個 PHP 頁面</h1> <?php echo "Hello World!"; // 這是一行註釋 /* 這是 多行 註釋 */ ?> </body> </html>
PHP 中的每個程式碼行都必須以分號結束
兩種在瀏覽器輸出文字的基礎指令:echo 和 print。
PHP變數
變數以 $ 符號開始,後面跟著變數的名稱
PHP 沒有宣告變數的命令。
變數在您第一次賦值給它的時候被建立:
PHP 是一門弱型別語言
PHP 會根據變數的值,自動把變數轉換為正確的資料型別。
在強型別的程式語言中,我們必須在使用變數前先宣告(定義)變數的型別和名稱。
PHP的基本語法
PHP(Hypertext Preprocessor,超文字前處理器)是一種執行在伺服器端的指令碼語言。
1.PHP語言標記
<?php 標準風格標記,屬於XML風格;?> <script lanauage="php">長風格標記</script> <? 短風格的標記 ?> <% ASP風格的標記 %>
2.PHP指令分割符
PHP需要在每個語句(指令)後用分號結束!
3.程式註釋
// 單行註釋 # 單行註釋 /* 多行註釋 */ /**多行文件註釋 */
4.變數
簡言之,變數是用於臨時儲存值的容器。(變數在任何語言中都處於核心地位)
變數的命名:
PHP中宣告變數必須是使用一個美元符號"$"加上後面的變數名來表示,使用賦值操作符(=)來給一個 變數賦值。
變數的命名:
一個有效的變數名是由字母或下劃線開頭,後面跟上任意數量的字母、數字或者下劃線。要注意的是,變數名一定不能以數字開頭,並且中間不可以使用空格,不能使用點分開 等!
按照正常的正則表示式,他將被表示成:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。
可變變數:
$str = 'hello'; $$str = 'world'; echo "$str $hello"; //輸出hello world echo "$str $$str"; //輸出hello world
變數的引用賦值:
簡單的使用"&"加到將要賦值的變數前。這意味著新的變數簡單的引用了原始變數。(換言之,“成為其別名”或者“指向”)。 $foo = 'Bob'; $bar = &$foo; $bar = '世界,你好!'; echo $bar; //輸出世界,你好! echo $foo; //輸出世界,你好! $foo = 'hello world'; echo $foo; //輸出hello world echo $bar; //輸出hello world
變數的型別:
|-----boole布林型
|-----integer整形
|-----四種標量型別---- |-----float浮點型,也稱double
| |-----string字串
|
資料型別--|
| |-----array陣列
|-----兩種複合型別---- |
| |-----object物件
| |-----resource資源
|-----兩種特殊型別---- |
|-----NULL
布林型(TRUE or FALSE): 布林值FALSE 整型值0為假,其他非零值不論正負均為TRUE 浮點型0.0 空白字串和字串'0' 沒有成員變數的陣列 沒有單元的物件(僅適用於PHP4) 特殊型別NULL 整型:如果給定數超出整型範圍,將會被解釋成float。 浮點型:範圍在1.7E-38~1.7E+38之間,精確到小數點15位。 字串:可以使用單引號、雙引號和定界符三種方法定義! 陣列:可以存放多個數據,並且可以存入任何型別的資料。 物件:由屬性和方法構成。屬性表示物件狀態,方法表示物件功能! 資源型別:儲存在外部資源的一個引用,通過專門的函式進行建立和使用! NULL型別:NULL不表示空格,不表示零,也不表示空字串,而是表示一個變數的值為空。 將變數直接賦值為NULL; 宣告的變數未被賦值 被unset()函式銷燬的變數
偽型別:
mixed:說明一個引數可以接受多種不同的(但並不必須是所有的)型別。 number:說明一個引數可以是integer後者float。 callback:接受使用者自定義的函式作為引數。
資料型別相互轉換:
自動型別轉換 布林型TRUE將轉化為1,FALSE轉化為0。 NULL轉化為0。 整型和浮點型進行運算,先將整型自動轉化為浮點型,再進行運算 字串和數字型參與預算,字串先轉化為數字,再進行運算。 強制型別轉換 (int),(integer):轉換成整型 (bool),(boolean):轉換成布林型 (float),(double),(real):轉換成浮點型 (string):轉換成字串 (array):轉換成陣列 (object):轉換成物件 或使用具體的轉換函式:intval(),floatval()和strval()。 注:整型轉換為浮點型,由於其精度範圍小於浮點型,所以轉換後精度不會改變,但是浮點型 轉換為整型時,會自動捨棄其小數部分。
檢測變數型別:
is_bool():是否為布林型 is_int(),is_integer(),is_long():是否為整型 is_float(),is_double(),is_real():是否為浮點型 is_string():是否為字串 is_array():是否為陣列 is_object():是否為物件 is_resource():是否為資源型別 is_null():是否為空 is_scalar():是否是標量,也就是是否為整數、浮點數、布林型或字串。 is_numeric():是否是任何型別的數字或數字字串 is_callable():判斷是否是有效的函式名
常量:用於一些固定的值!
常量的宣告:通過使用define()函式宣告常量,常量名照樣區分大小寫,按照慣例,一般常量名全大寫,常量名前不要加"$"。 example:define('NAME','xiaozhang'); echo NAME; //輸出xiaozhang
常量和變數的區別:
常量前沒有"$"符號 常量只能通過define()函式定義,不能通過賦值 常量可以不用理會變數範圍的規則而在任何地方定義和訪問 常量一旦定義就不能被重新定義或者取消定義,直到指令碼執行結束自動釋放 常量的值只能是標量型別
PHP中常用魔術常量:
__FILE__:當前的檔名 __LINE__:當前的行數 __FUNCTION__:當前的函式名 __CLASS__:當前的類名 __METHOD__:當前物件的方法名
運算子
算數運算子: + 加 - 減 * 乘 / 除 % 取餘(求模) ++ 累加 -- 累減 注:$a++先計算表示式然後再執行遞增的操作,++$a先執行遞增操作,再計算表示式的值。累減同理!
賦值運算子:
= 將一個值或表示式計算結果賦給變數 += 將變數與所賦值相加後的結果再賦給該變數 -= ...... *= ...... /= ...... %= ...... .= 將變數與所賦值相連後的結果再賦給該變數
比較運算子:
> 大於 < 小於 >= 大於等於 <= 小於等於 == 等於 === 全等於 <>或!= 不等 !== 不全等 注:==和===的區別在於==只關心參與比較的數的值是否相等,而不管型別是否相同!
邏輯運算子:
and或&& 邏輯與 兩邊必須都為TRUE才為TRUE or 或|| 邏輯或 兩邊只要一個為TRUE就為TRUE not或! 邏輯非 取反,若表示式為TRUE則結果為FALSE xor 邏輯異或 兩邊不同時為TRUE
表示式:PHP的基石,幾乎所編寫的任何程式碼都可以看做是一個表示式,通常是變數、常量和運算子的組 合等!
PHP流程控制結構
分支結構:
單一條件分支結構 雙向條件分支結構 多向條件分支結構 巢狀條件分支結構
if(表示式){ if(表示式){ if(表示式){ if(表示式){
... ... ... if(表示式){
} }else{ elseif(表示式){ ...
... ... }
} } elseif(表示式){
---------------- if(表示式){
switch(表示式){ ...
}else{
case 值1: ...
... }
break; }
case 值2:
...
break;
case 值3:
...
break;
default:
...
}
迴圈結構:
while語句: do...while語句: for語句:
while(表示式){ do{ for(初始化;條件表示式;增量){
... ... ...
} }while(表示式); }
特殊流程控制語句:
break:中斷當前迴圈,即結束迴圈的執行
continue:只能使用在迴圈內部,功能是跳過該次迴圈,執行下一次迴圈
exit:不論在哪個結構中,直接退出當前指令碼
PHP的函式應用
函式:是指一個被命名的,獨立的程式碼段,它執行特定的任務,並可能給它的程式返回一個值!
函式的宣告:
function 函式名([引數1,引數2...引數n]){ 函式體; return 返回值; }
函式的呼叫:函式名([引數1,引數2...引數n]);、
函式的引數:引數列表是由零個、一個或多個引數組成,定義函式時,其後面括號內的表示式稱為形式引數(簡稱形參),被呼叫函式名後括號內的引數稱為實際引數(簡稱實參)。
函式的返回值:
return語句可以向函式呼叫者返回函式體中任意確定的值;
將程式控制權返回到呼叫者的作用域,即退出函式。在函式中如果執行了return語句,則它後面的語句將不會再執行!
PHP變數的範圍:
區域性變數:也稱為內部變數,是在函式內部宣告的變數,其作用域僅限於函式內部。不僅函式內部宣告的變數是區域性變數,為宣告函式設定的引數因為只能在本函式內部使用,所以也是區域性變數。區別在於,引數從函式外部獲得值,而函式中宣告的變數只能在函式內部被賦值。
全域性變數:也成為外部變數,是在函式外部定義的,它的作用域從定義開始,到本程式結束。函式內部無法直接呼叫全域性變數,若要使用全域性變數,必須使用global關鍵字定義目標變數或者使用$GLOBALS陣列(鍵名對應變數名,值對應變數的內容)。
靜態變數:通過static宣告靜態變數,即函式執行完畢後,其靜態變數依然儲存在記憶體中!
PHP函式的各種應用:
常規引數函式:string funName(string name, int age);
偽型別引數的函式:mixed funName(mixedargs);//使用mixed描述的參數 numberfunName(numberargs);//使用mixed描述的引數 numberfunName(numberargs); //使用number描述的引數
引用引數的函式:void funName(array &$arr); //使用&描述的引數
注:如果函式的形參中使用'&'修飾引數,則在呼叫該函式時就必須傳入一個變數,而不能傳遞一個 值。預設引數的函式:mixed funName(String name [,string value[,int age]]);//使用[]描述的引數可變個數引數的函式:mixed funName(String arg[,String ...]);//使用...描述的引數
回撥函式:mixed funName(callback arg); //使用偽型別callback描述的引數
遞迴函式:即自己呼叫自己的函式,在函式體內部直接或間接的呼叫自己。