[基礎課程] PHP 常用函式與自訂函式
php 本身的函數非常多,譬如之前所用的rand()
就是其中一種。同時常有重複的函數功能,譬如mt_rand()
跟rand()
。你不需要特別去背函式庫,只需要用到時就去查,慢慢常用的就會記住。請開始在 Web 目錄下新增檔案 2_array.php,為了簡化程式碼結構將不建置 HTML 基本結構。請開始做 PHP 各種練習並預覽網頁結果。
常用的函數(式)
phpinfo()
可以拿來查看 PHP 環境檢查上的確認。也是屬於比較私密的資料,不要放上網址讓知道你伺服器環境的弱點而被攻擊。
|
rand(min,max)
會產生 min~max 之間的隨機整數,這裡不帶範例。
array()
可以用 array() 函式快速建立一個陣列組合,多值用,分開。記得要用變數儲存。你也可以指定 ‘索引’=>’內容’
//array() 可以快速指定完整的陣列,記得用變數儲存 |
unset()
殺掉變數,可以殺掉一個完整變數,或是殺掉陣列內的某一格或整個陣列變數。你可以拿來跟指定 變數=null
做差異比較。
//unset() 可以殺掉變數 |
date(format)
產生系統時間(以 php.ini 宣告的時區為主,預設 GMT+0),format 要填寫指定所需格式。參考網址 link>>時間格式
/*系統時間與日期*/ |
如果此時要事後調整時區,比較直覺的作法是將時間往後推。透過 hour+7 的寫法。
/*系統時間與日期*/ |
strtotime() 能將字串指令變成時間代碼。提供時間與時間的數學加減計算。
date_default_timezone_set()
直接告知網頁是以時區以哪個為主,這屬於比較正式的時區宣告。不是透過上面比較治標不治本的方法用調數字去補足。
date_default_timezone_set('Asia/Taipei'); |
ceil() && floor() && round()
無條件進位 && 無條件捨去 && 四捨五入,用在計算時使用
echo "10÷3=??<br>"; |
substr() && mb_substr()
擷取字串,能將一個文字串做擷取某部分出來。後者是針對中文的支援。
// substr 擷取字串 |
str_replace()
抽取某字串進行字串替換,不特別帶練習
addslashes()
自動增加反斜線在特殊符號’”/之前綴,不特別帶練習
md5()
md5 加密,可以單向字串加密但無法反向解密,通常是對帳密認證之類做存取後兩者比對。
chr()
查詢 ASCII 碼的字串值。通常用在程式連續產字的時候方便性。
//chr 轉為 ascii code=> 0-9, a-z,A-Z = 48-57, 97-122, 65-90 |
練習:產生一組隨機密碼,由 0-9, a-z,A-Z 組成,密碼長度 8~12
提示:你會需要用到 rand,for,ifelse,chr
解答:
$num=rand(8,16); |
自訂的函式
你可以自訂一個函式,透過丟入返回完成任務達到獨立事件處理。
練習:跟著做,說話小程式
/*custom function*/ |
透過這個小範例有不少地方要注意:
- 可以傳入變數,讓函式方便接著處理。
- function 的世界是獨立的,只能透過 () 或 return 傳遞資料,除了特別能力的變數。
- 程式由右到左,所以你要能理解 echo 的執行觸發順序。
- return 可以不寫,如果你不需要回傳。
- 有 return 情況下,外面程式也可以不理會。
自我練習:拿前面的密碼產生練習。
主程式提供彈性的數量值給副程式。由副程式產生對應數量的密碼給主。然後主程式把資料顯示出來。
解答:
function pwd($many) |
回家作業 1
隨機 1~100 顆星星填滿你的畫面,每個星星的顏色大小隨機不同。
用到 php=rand+for 與 HTML=DIV+styl
高手挑戰
背景黑色,星星顏色偏向淺色系。讓星星透過 css animate 旋轉且速度不同。
回家作業 2
大樂透電腦選號 1 ~ 49,每次產生 5 ~ 10 組樂透號組,每組6個號碼不重複
用到 array(),array_values(),sort(),for(),rand(),foreach();
以上課題之完整代碼: view full code