此篇文章是寫給已經學習過其他程式語言的開發者,讓您能在短時間內寫出簡單的 PHP 程式碼,我知道很多時候,您學會了某種程式語言,到了新公司又要寫另一種程式語言,如果您遇到這總狀況的話,那這篇文章肯定對您有所幫助。但我並不認為用這種方式就可以把一種程式語言學好,每個程式語言都有其特性,您應該買本書花點時間來研究。

此外,非常建議大家有空沒事可多看一下官網的文件,裡面有詳細的解說,也有一些範例可以幫助大家了解有哪些好用的內建函數。

程式碼區塊

            
                <?php
                // 程式碼寫在這裡
                // 建議使用的方式
                ?>

                <script language="php">
                    // 程式碼寫在這裡
                </script>

                <?
                // 程式碼寫在這裡
                // 需在 php.ini 將 short_open_tag 設定為 On
                // 不建議使用,易與xml混淆
                ?>

                <%
                // 程式碼寫在這裡
                // 需在 php.ini 將 asp_tags 設定為 On
                // 不建議使用,易與 asp 混淆
                %>
            
        
  • 行 4:如果下方沒有 PHP、HTML 或任何其他程式碼的話,可以省略不寫。

註解

            
                <?php
                /*
                    我是註解
                    我是註解
                */

                // 我也是註解
            
        

輸出

            
                <?php
                // 輸出字串 (範例 1)
                echo 'abc';

                // 輸出變數 (範例 2)
                // 注意單引號與雙引號
                $str = 'abc';
                echo '範例2: '.$str;
                echo '範例2: $str';
                echo "範例2: $str";

                // 輸出陣列 (範例 3)
                $arr = [1, 2, 3, 4, 5];
                print_r($arr);
                ?>

                =========範例 1 輸出=========
                abc

                =========範例 2 輸出=========
                範例2: abc
                範例2: $str
                範例2: abc

                =========範例 3 輸出=========
                Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 3
                    [3] => 4
                    [4] => 5
                )
            
        
  • 行 5:請注意範例 2 中單引號與雙引號的差別。

定義變數

            
                <?php
                $dog = '狗';
                $one = 1;
                $bool = false;
                $float = 0.33;
                define('const', 'abc');  // 定義常數
                $obj = new Object();     // 宣告物件
                $arr = array();          // 陣列初始化
                $arr = [];               // 陣列初始化
            
        

運算子

算術運算子

運算子 說明 運算子 說明
+ 加法運算 % 取餘數
- 減法運算 ++ 累加
* 乘法運算 -- 遞減
/ 除法運算

比較運算子

運算子 說明 運算子 說明
< 小於 > 大於
<= 大於或等於 >= 小於或等於
== 等於 != 不等於
=== 資料與資料型態完全等於 !== 資料與資料型態不完全等於

邏輯運算子

運算子 說明 運算子 說明
&& 並且 || 或者
! xor 兩邊同為true或同為false為false,否則為true。

其他運算子

                
                    <?php
                    // 三元運算子
                    // 範例: 當$a大於10時,$a就等於10,否則$a等於0。
                    $a = ($a > 10) ? 10 : 0;

                    // instanceof 運算子
                    // 範例: 判斷$obj1與$obj2資料型態是否相同
                    if ($obj1 instanceof $obj2) {

                    }
                
            

程式流程控制

判斷式

                
                    <?php
                    // if 判斷式
                    if ($animal == 'dog') {
                        echo 'dog';
                    } elseif ($animal == 'cat') {
                        echo 'cat';
                    } else {
                        echo 'unknown';
                    }

                    // switch 判斷式
                    switch ($animal) {
                        case 'dog':
                            echo 'dog';
                            break;
                        case 'cat':
                            echo 'cat';
                            break;
                        default:
                            echo 'unknown';
                            break;
                    }
                
            

迴圈

                
                    <?php
                    // for 迴圈
                    for ($i=0; $i < 10; $i++) {

                    }

                    // foreach 迴圈
                    foreach ($array as $key => $value) {

                    }
                    foreach ($array as $value) {

                    }

                    // while 迴圈
                    while ($i <= 10) {
                        $i++;
                    }

                    // do-while 迴圈
                    do {
                        $i++;
                    } while ($i <= 10);
                
            

迴圈中可以使用 break 來跳出迴圈或使用 continue 結束此次迴圈。

例外處理

                
                    <?php
                    try {

                    } catch (Exception $e) {

                    }
                
            

goto 陳述式 (PHP 5.3 以上支援)

                
                    <?php
                    goto a;
                    echo 'aaa';
                    a:
                    echo 'bbb';
                
            
  • 行 2:goto 陳述式會直接跳轉到行 4 的位置,因此以上範例會輸出 bbb,並不會輸出 aaa。不過不建議太常使用此功能,用太多只會讓程式碼的邏輯運行變得很混亂,大部分的狀況都可以使用其他方式來替換掉 goto 陳述式。

陣列

            
                <?php
                // 空陣列
                $arr1 = array();
                $arr1 = [];

                // 宣告賦值
                $arr2 = array('狗', '貓', '牛');
                $arr2 = ['狗', '貓', '牛'];

                // 自訂索引
                $arr3 = array('dog' => '狗', 'cat' => '貓', 'cow' => '牛');
                $arr3 = ['dog' => '狗', 'cat' => '貓', 'cow' => '牛'];

                // 多維陣列
                $arr3 = array(array('one', 'two'), array('three', 'four'));
                $arr3 = [['one', 'two'], ['three', 'four']];
            
        

常用陣列處理函數

                
                    <?php
                    count($arr);                        // 計算 $arr 個數
                    asort($arr);                        // 將 $arr 根據 value 排序
                    ksort($arr);                        // 將 $arr 根據 key 排序
                    array_keys($arr);                   // 返回 $arr 陣列中的 key 值陣列
                    array_values($arr);                 // 返回 $arr 陣列中的 value 值陣列 (key 值會從 0 開始)
                    in_array('first', $arr);            // 判斷 $arr 陣列中,有無 value = first
                    array_key_exists('first', $arr);    // 判斷 $arr 陣列中,有無 key = first
                    array_search('first', $arr);        // 搜尋 $arr 陣列中,value = first 的 key 值
                    array_column($arr, 'first')         // 取得 $arr 陣列中,key = first 的 value 值陣列
                    array_combine($keyArr, $valueArr)   // 建立一個陣列,用 $keyArr 作為 key 值,用 $valueArr 作為 value 值
                
            

常用字串處理

            
                <?php
                substr('abcdefg', 1, 3);           // 字串擷取
                str_replace('a', 'a', 'abcdefg');  // 字串取代
                strlen('abcdefg');                 // 字串長度
                mb_strlen('一二三');                // 字串長度 (中文)
                trim('abcdefg')                    // 清除字串前後空白
                strtolower('abcdefg')              // 將字串轉換為小寫。
                strtoupper('abcdefg')              // 將字串轉換為大寫。
                ucfirst('abcdefg')                 // 將首字字母轉成大寫。
            
        

方法

            
                <?php
                // 呼叫方法
                outputStr('abc');

                // 定義方法
                function outputStr($str) {
                    echo $str;
                    return true;
                }
            
        

類別

            
                <?php
                class Math extends Object implements imp1, imp2 { //繼承與實作介面
                    const PI = 3.14;          // 宣告靜態變數
                    private $sum = 0;         // 宣告一般變數

                    public function __construct() {    // 建構方法
                        parent::__construct();         // 執行父類別建構方法
                        $sum = $this->sum;             // 取得類別屬性
                        $this->add();                  // 執行類別方法
                    }
                    public function add() {}           // 一般方法
                    public static function abs(}       // 靜態方法
                }

                // 使用物件
                $math = new Math();  // 宣告類別
                $math->add();        // 呼叫類別方法
                $math::abs();        // 呼叫靜態方法
            
        

PHP檔案名稱不需要與類別名稱相同,如果要在其他檔案使用類別的話,只需要使用以下方式引入:

            
                <?php
                require_once('Math.php');  // 先載入類別檔案
                $math = new Math();        // 宣告類別
            
        

Cookie 與 Session

            
                <?php
                // 使用 SESSION 時要先啟動
                // 啟動之前不能有任何的輸出
                session_start();
                $_SESSION['a'] = '123';   // 設定 SESSION
                echo $_SESSION['a'];      // 輸出 SESSION
                unset($_SESSION['a']);    // 銷毀 SESSION

                $_COOKIE['a'] = '123';    // 設定 COOKIE
                echo $_COOKIE['a'];       // 輸出 COOKIE
                unset($_COOKIE['a']);     // 銷毀 COOKIE
            
        

php session 詳細的運作方式可參考以下文章:

POST 與 GET

            
                <?php
                echo $_POST['A'];  // 取得 POST 變數
                echo $_GET['A'];   // 取得 GET 變數

                // 避免錯誤訊息的寫法
                // 方法1: 先檢查資料是否存在
                $a = isset($_POST['A']) ? $_POST['A'] : '預設值';
                $a = array_key_exists('A', $_POST) ? $_POST['A'] : '預設值';

                // 方法2: 使用PHP內建的filter_input方法
                $a = filter_input(INPUT_POST, 'A');
                $a = filter_input(INPUT_GET, 'A');