了解這些PHP小技巧嗎?
1. $_POST并非是HTTP POST過來的數據, 如json格式的數據就沒法接受,這是因為由于歷史原因,PHP只能解析Content-Type為 application/x-www-form-urlencoded 或 multipart/form-data的Http請求,只不過現在json流行了,如下處理即可:
$_POST = json_decode(file_get_contents('php://input'), true);print_r($_POST);
2.isset()函數是用來檢測變量是否設置,但是如果變量值是NULL時也返回false。 這可能跟你的本意相反了,如下解決:
$a = null; echo isset($a); //false //下面是更可靠的檢測方式echo array_key_exists('a', get_defined_vars()); //true
3.如何更有效的檢測字符串長度。一般strlen函數執行起來相當快,因為它不做任何計算,只返回在zval 結構(C的內置數據結構,用于存儲PHP變量)中存儲的已知字符串長度。但是,由于strlen()是函數,多多少少會有些慢,因為函數調用會經過諸多步驟,如字母小寫化(譯注:指函數名小寫化,PHP不區分函數名大小寫)、哈希查找,會跟隨被調用的函數一起執行。在某些情況下,你可以使用isset() 技巧加速執行你的代碼。
if (strlen($foo) < 5) { echo “Foo is too short”$$ } //與下面進行比較if (!isset($foo{5})) { echo “Foo is too short”$$ }
調用isset()恰巧比strlen()快,因為與后者不同的是,isset()作為一種語言結構,意味著它的執行不需要函數查找和字母小寫化。也就是說,實際上在檢驗字符串長度的頂層代碼中你沒有花太多開銷。
?
推薦文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
穩定
產品高可用性高并發貼心
項目群及時溝通專業
產品經理1v1支持快速
MVP模式小步快跑承諾
我們選擇聲譽堅持
10年專注高端品質開發