- C4 陣列
- array_combine 和 array_merge 的不同
- array_combine($ary1, $ary2)
- return array $ary1 為索引,$ary2 為值
- array_merge($ary1, $ary2)
- return array 為$ary1與$ary2聯集, 等於 $ary1 + $ary2
- 提醒: associative array key 相同時 $ary1 的value 會被 $ary2 取代,數字key除外
- array_combine($ary1, $ary2)
- array_combine 和 array_merge 的不同
- C5 函數
- 可變長度參數
- funtion sum (int ...$ary)
{
print_r($ary);
}
sum(1,2,3); // array(0=>1, 1=>2, 2=>3)
- funtion sum (int ...$ary)
- 靜態變數在離開函數後仍會保留到下次被呼叫,函數中宣告的變數初始值只有在第一次有效
- 函數配合 anonymous function 可用 function expressions 方式宣告
- 傳址傳址 ped 補充:將 object 指定給另一個參數時,跟傳址表現出來的行為很類似,雖然文件說不完全相同,如果不想這樣連動請使用 clone
- 可變長度參數
- C7 傳遞資料
- header("Refresh:2"); 可在兩秒後重整此頁面
- header("Expires: 指定時間 ") 可指定 php cache 的時間,不想 cache 就設過去的時間
- php7 除了三元運算子有新的縮寫法
- $a = isset($a) ? $a : '';
$a = $a ?? ''; //與上行相同
- $a = isset($a) ? $a : '';
- cookie 也可像陣列般命名
- C8 檔案上傳
- is_readable(path)、is_writeable(path)等可先檢查檔案權限有沒有問題
- C9 圖片
- GD 最常用的應該是縮圖功能吧
- imagecopyresamepled()
- GD 最常用的應該是縮圖功能吧
- C10 錯誤處理
- 處理方式
- 終止顯示錯誤訊息
- 寫入 log
- 自訂錯誤處理程序
- set_error_handler('funcName') 可指定錯誤處理函數
- 處理方式
2017年6月11日 星期日
[一起讀書吧] PHP 與 Mysql 網頁資料庫程式設計 978-957-22-4533-0
這本還蠻基礎的, Ped 簡單列一下看的時候自己覺得比較有意思的地方:
2015年1月27日 星期二
[PHP 語法實測] 取得當前路徑或檔案名稱
想取得當前路徑和檔名有許多方法,
輸出:
D:\xampp\htdocs\phpSyntaxLab\index.php
D:\xampp\htdocs\phpSyntaxLab
index.php
index
phpSyntaxLab
phpSyntax
D:\xampp\htdocs\phpSyntaxLab
D:\xampp\htdocs
D:\xampp\htdocs
__FILE__取得當前位置的路徑以至完整檔名;
__DIR__ 則可取得除了檔名之外的完整路徑;
basename() 可用以忽略完整路徑,僅取得檔案名,
其會取得在最後一個 \ 斜線符號後方的字串,儘管其為資料夾名,而非檔名也會被擷取,
第二個參數可鍵入副檔名,如此取得結果即不包含副檔名,其作用類似於 preg_replace('/.php$/');
dirname(__FILE__) 與 __DIR__ 都會取得檔案系統中的完整路徑,
讓兩種方式各跑一百萬遍輸出:
dirname(__FILE__) cost 0.4360249042511 seconds
__DIR__ cost 0.088005065917969 seconds
__DIR__較dirname(__FILE)快了近五倍。
但由於dirname() 取值方式為取至最後一個斜線之前的字串,
使用dirname(dirname(__FILE__))可相當方便的取到再更上一層的路徑。
需特別注意的是, __DIR__ 只有在 php 5.3之後的版本才可使用
這裡針對 __DIR__、__FILE__、basename()、dirname()
幾個方法進行實測
輸出:
D:\xampp\htdocs\phpSyntaxLab\index.php
D:\xampp\htdocs\phpSyntaxLab
index.php
index
phpSyntaxLab
phpSyntax
D:\xampp\htdocs\phpSyntaxLab
D:\xampp\htdocs
D:\xampp\htdocs
__FILE__取得當前位置的路徑以至完整檔名;
__DIR__ 則可取得除了檔名之外的完整路徑;
basename() 可用以忽略完整路徑,僅取得檔案名,
其會取得在最後一個 \ 斜線符號後方的字串,儘管其為資料夾名,而非檔名也會被擷取,
第二個參數可鍵入副檔名,如此取得結果即不包含副檔名,其作用類似於 preg_replace('/.php$/');
dirname(__FILE__) 與 __DIR__ 都會取得檔案系統中的完整路徑,
讓兩種方式各跑一百萬遍輸出:
dirname(__FILE__) cost 0.4360249042511 seconds
__DIR__ cost 0.088005065917969 seconds
__DIR__較dirname(__FILE)快了近五倍。
但由於dirname() 取值方式為取至最後一個斜線之前的字串,
使用dirname(dirname(__FILE__))可相當方便的取到再更上一層的路徑。
需特別注意的是, __DIR__ 只有在 php 5.3之後的版本才可使用
2015年1月25日 星期日
[PHP 語法實測] time V.S. microtime function
time 可取得自1970年1月1日00:00:00到目前時間的秒數;
microtime 也可做到同樣的事,只是其取至微秒數。
兩者回傳都是秒數,當時間需要進行加減運算時相當方便。
輸出:
microtime:0.22268100 1422235329
microtime(true):1422235329.2227
time:1422235329
time cost 0.19701099395752
microtime cost 3.2161841392517
microtime() 會將小數點前後秒數以空白為分界切分回傳,使用前需用preg_split() 等function 切分,
microtime(true) 則僅回傳一個float值,
time() 僅回傳整數秒,
兩者的執行效率比較上,各執行1000000遍,time() 比 microtime() 快了至少 15 倍有餘,
當然在僅執行一次時這差別應該是微乎其微,看大夥需求使用囉。
microtime 也可做到同樣的事,只是其取至微秒數。
兩者回傳都是秒數,當時間需要進行加減運算時相當方便。
輸出:
microtime:0.22268100 1422235329
microtime(true):1422235329.2227
time:1422235329
time cost 0.19701099395752
microtime cost 3.2161841392517
microtime() 會將小數點前後秒數以空白為分界切分回傳,使用前需用preg_split() 等function 切分,
microtime(true) 則僅回傳一個float值,
time() 僅回傳整數秒,
兩者的執行效率比較上,各執行1000000遍,time() 比 microtime() 快了至少 15 倍有餘,
當然在僅執行一次時這差別應該是微乎其微,看大夥需求使用囉。
訂閱:
文章 (Atom)