此篇文章是寫給已經學習過其他程式語言的開發者,讓您能在短時間內寫出簡單的 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');