PHP
Hypertext Preprocessor 代表「超文本預處理器」,主要用於網頁開發撰寫動態頁面,中文還蠻清楚的知道 PHP 不像 HTML、CSS 及 JavaScript 一樣可以直接使用瀏覽器執行,必須要有一個開發環境才能執行 PHP
如何執行 PHP
執行方式分為本地端及實際伺服器
本地端
- 安裝好 PHP 腳本後就可以使用 cmd 執行
$ php fileName.php
- 安裝執行環境,例如: XAMPP ([第九週]後端基礎 — 基本運作原理(搭配 XAMPP)
實際伺服器
需購買實際伺服器去運行。
網頁直接練習
如果真的只是單純練習語法,可以 google「php online editor」就可以找到蠻多線上編輯器。
php 基本撰寫概念
- 文件副檔名為
.php
- php 文件通常包含 html 標籤以及一些 php 語法
- php 語法以
<?php
開頭,以?>
結尾,如果沒有包在 php 語法內,就是單純的寫 html,寫什麼就印什麼,但就無法使用 php 的程式語法 - 結尾分號為必須
- 以
.
做字串連接 - 範例1 :印出 hello world — — —
<?php echo "hello world";?>
- 範例2.:以
.
做字串連接 — — —
<?php echo "abc" . "abc"; ?>
變數
- 以 $符號為開頭,後面為變數名稱
- 變數名稱不能以數字開頭
- php 沒有創建變數的命令,直接賦值即可使用
- 不需要告知變數的類型
- 範例:
<?php $txt = "Hello world!"; $x = 5; $y = 10.5; echo $x; //5; echo $x + $y //15.5; echo $y . $txt; //10.5Hello world!?>
作用域:全域(global)及局部(local)
- global 只能在函式外部進行訪問
- local 只能在函式內部進行訪問
- 範例:
global 關鍵字
- 如果要在函式內使用全域變數可在前方加上 global
- 範例:
static 關鍵字
一般的局部變數在函式結束後會釋放,不過有時候會希望保留,因此我們可以在變數前變數前面加上 static ,使其變成靜態變數,在下次呼叫函式時,該變數的值會保留下來
- 範例
創建陣列 arr()
陣列分成索引陣列及關聯陣列兩種
索引陣列
array(value1, value2, value3, etc.);
- 為一般的陣列
- 舉例:
$arr = array('123', 1, 'abc', 23, 'wefe');
關聯陣列
array(key=>value, key=>value, key=>value, etc.);
- 以 key 對應 value
- 舉例:
$age = array("Bill"=>"60", "Steve"=>"56", "Mark"=>"31");
陣列相關函式
取得陣列的相關資訊
var_dump()
:index(key) 值 型態print_r()
:index(key) 值
取得陣列元素
- 使用中括號取得
取得陣列長度
sizeof()
$arr = array(2, 4, 6, 8, 10);echo sizeof($arr); //5
新增陣列元素
array_push(var, value, value)
:可一次新增多筆[]
:一次新增一筆
刪除陣列元素
array_splice(start, deleteCount)
unset(var[index])
迴圈
<?php $arr = array(2, 4, 6, 8, 10); for($i = 0; $i < sizeof($arr); $i++) { echo 'arr 第 ' . $i . ' 個為:' . $arr[$i] . '<br>'; }?>
判斷式
<?php $num = 60; if ( $num < 60) { echo 'bad'; } else { echo 'good!'; }?>
函式
<?php function add($a, $b) { return $a + $b; } echo add(1,3);?>
字串相關函式
strlen()
:返回字串長度,以字符計算str_word_count()
:對字串中的單字進行計數strrev()
:反轉字串strpos()
:回傳給字串中第一個被找到指定字符之索引,若不存在於陣列中則回傳 falsestr_replace()
:用一些字元替换字串中的另一些字元
其他函式
data("Y-m-d H:i:s")
:輸出現在時間isset()
:檢查是否有此變數empty()
:檢查是否有值
[補充說明] 有關於 isset() 與 empty() 的差異可參考:PHP isset()和empty()的區別
exit()
、die()
:輸出一個消息並且退出當前腳本
從前端傳資料給後端:GET 與 POST
在 [第九週]透過瀏覽器交換資料 — 表單、AJAX、XMLHttpRequest,嘗試了用表單傳資料到後端,現在要實作後端如何接收資料,我們先再回過頭看看這張圖
在發送 Request 內容有個 url 的欄位:假設為
http://localhost:8080/mia/data.php
server 接收到這個 url 後就去找尋對應的檔案(data.php)執行 php,其實這個網址還可以傳其他東西到後端,比如說:
http://localhost:8080/mia/data.php?a=1
後面加的東西就是 QueryString,? 後方就是參數 key=value,這個參數會自動存到 php 定義好的 $_GET
中,而如果是用 POST 的方式資料則會儲存到 $_POST
。
$_GET['key']
:是一個關聯陣列,可以取得 get 的值(記得用引號)$_POST['key']
:是一個關聯陣列,可以取得 post 的值(記得用引號)
實際操作
前置作業:建立一個表單,並說明傳送到哪個地方
- 以 GET 操作
- 以 POST 操作(只要將表單
method="POST"
, PHP 程式碼中$_GET
換成$_POST
即可)
以上有任何錯誤的地方歡迎指正,感謝。