[第九週]後端基礎 — PHP 基礎語法

MiaHsu
7 min readAug 18, 2020

--

學習目標:了解 PHP 基礎語法,以及利用 GET 與 POST 從前端傳資料給後端

PHP

Hypertext Preprocessor 代表「超文本預處理器」,主要用於網頁開發撰寫動態頁面,中文還蠻清楚的知道 PHP 不像 HTML、CSS 及 JavaScript 一樣可以直接使用瀏覽器執行,必須要有一個開發環境才能執行 PHP

如何執行 PHP

執行方式分為本地端及實際伺服器

本地端

  1. 安裝好 PHP 腳本後就可以使用 cmd 執行 $ php fileName.php
  2. 安裝執行環境,例如: 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 ,使其變成靜態變數,在下次呼叫函式時,該變數的值會保留下來

  • 範例
a 一直往上加

創建陣列 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():回傳給字串中第一個被找到指定字符之索引,若不存在於陣列中則回傳 false
  • str_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 即可)

以上有任何錯誤的地方歡迎指正,感謝。

--

--

MiaHsu

每件事都是最好的安排,成為更好的自己