PHP基礎練習(1)
1、PHP中的幾個輸出函式echo,print,printr,sprintf,var_dump的區別
(1)echo是語句,不是函式,不能輸出複雜物件,如陣列和物件,只能列印簡單型別。如int,string;
(2)print是語句,但有返回值,返回值為1,只能輸出一個變數,不能輸出複雜物件,如陣列和物件,只能列印簡單型別。如int,string;
(3)printr是函式,可以列印複雜的資料型別,如陣列,物件等;
(4)sprintf是函式,與printf類似,返回格式化後的文字;
(5)printf是函式,輸出格式化內容,和C語言的printf類似;
(6)var_dump()是函式,輸出變數、型別、字串等內容;
2、JSON資料的格式特點
JSON是一種輕量級的資料交換格式,他是基於ECMAScript的一個子集,特點如下:
(1)鍵/值對集合
(2)是一個有序列表
3、PHP中的常量
__LINk__:檔案中的當前行號
__FILE__:檔案的完整路徑和檔名,如果用在包含檔案中,則返回當前的檔名;
__DIR__:返回檔案所在的目錄,如果被用在包含檔案中,則返回被包括的檔案所在的目錄,等價於dirname(__FILE__);
__FUNCTION__:返回函式的名稱;
__CLASS__:返回類名;
__METHOD__:返回類的方法名;
__NAMESPACE__:返回當前的名稱空間
4、獲取IP地址:$_SERVER['REMOTE_ADDR'],當客戶機使用代理時獲取不到真實的IP地址;
5、PHP快取技術有哪些?
(1)全頁面靜態快取,也就是將頁面全部快取為html靜態頁面,使用者訪問時直接訪問靜態頁面,從而省去伺服器解析過程;
(2)頁面部分快取,
(3)資料快取,通過一個id進行請求,將獲取到 的資料儲存在PHP檔案中,下次直接訪問;
(4)查詢快取,將查詢結果進行快取
常用快取技術有,Redis、MemCache
6、isset、empty、is_null的區別
(1)當變數沒有被定義時,is_null和引數本身是不能被作為引數判斷的。會返回Notice錯誤;
(2)emty和isset都會首先檢查變數是否存在,然後對變數進行檢測,而is_null和引數本身只是檢查變數值是否為null,因此如果變數沒有被定義就會出現錯誤;
(3)isset僅當值為null和未定義時,返回false;
(4)當empty檢測“”,0、“0”、NULL、false、空陣列、未定義變數時均會返回false;
(5)is_null僅判斷變數是否為null,如果變數未定義,則警告;
7、MVC的優缺點
(1)優點
a、可以為一個模型同時建立一個或多個檢視,通過變化-傳播機制可以確保所有相關檢視及時得到模型資料變化,從而使所有關聯的檢視和控制器做到行為同步;
b、可以根據需要選擇、關閉或替換物件;
c、模型的可移植性;
d、潛在的框架設計,可以基於此應用建立應用程式框架;
(2)缺點
a、增加了系統和結構的複雜性
b、檢視和控制器過於緊密的連線
c、檢視對模型資料的低效率訪問
d、目前一些高階的介面工具或構造器還不支援MVC模式,改造這些工具的代價是很高的,這也限制了MVC的應用;
8、session和cookie的區別與聯絡以及session共享方案的解決
(1)session儲存在服務端,cookie儲存在客戶端
共享方案:
(1)使用資料庫儲存session,即使伺服器宕機了也沒事
9、常用正則表示式
匹配中文字元的正則表示式: [\u4e00-\u9fa5]
匹配雙位元組字元(包括漢字在內):[^\x00-\xff]
匹配空行的正則表示式:\n[\s| ]*\r
匹配HTML標記的正則表示式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正則表示式:(^\s*)|(\s*$)
匹配Email地址的正則表示式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網址URL的正則表示式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配國內電話號碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配騰訊QQ號:^[1-9]*[1-9][0-9]*$