1. 程式人生 > 實用技巧 >PHP基礎知識總結

PHP基礎知識總結

PHP基礎知識

  • PHP 代表 PHP: Hypertext Preprocessor
  • PHP 檔案可包含文字、HTML、JavaScript程式碼和 PHP 程式碼
  • PHP 程式碼在伺服器上執行,結果以純 HTML 形式返回給瀏覽器
  • PHP 檔案的預設副檔名是 ".php"

PHP能做什麼

  • PHP 可以生成動態頁面內容
  • PHP 可以建立、開啟、讀取、寫入、關閉伺服器上的檔案
  • PHP 可以收集表單資料
  • PHP 可以傳送和接收 cookies
  • PHP 可以新增、刪除、修改您的資料庫中的資料
  • PHP 可以限制使用者訪問您的網站上的一些頁面
  • PHP 可以加密資料

安裝

如果您的伺服器不支援 PHP,您必須:

  1. 安裝 Web 伺服器
  2. 安裝 PHP
  3. 安裝資料庫,比如 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描述的引數

  遞迴函式:即自己呼叫自己的函式,在函式體內部直接或間接的呼叫自己。