了解這些PHP小技巧嗎?
1. $_POST并非是HTTP POST過來的數(shù)據(jù), 如json格式的數(shù)據(jù)就沒法接受,這是因?yàn)橛捎跉v史原因,PHP只能解析Content-Type為 application/x-www-form-urlencoded 或 multipart/form-data的Http請求,只不過現(xiàn)在json流行了,如下處理即可:
$_POST = json_decode(file_get_contents('php://input'), true);print_r($_POST);
2.isset()函數(shù)是用來檢測變量是否設(shè)置,但是如果變量值是NULL時(shí)也返回false。 這可能跟你的本意相反了,如下解決:
$a = null; echo isset($a); //false //下面是更可靠的檢測方式echo array_key_exists('a', get_defined_vars()); //true
3.如何更有效的檢測字符串長度。一般strlen函數(shù)執(zhí)行起來相當(dāng)快,因?yàn)樗蛔鋈魏斡?jì)算,只返回在zval 結(jié)構(gòu)(C的內(nèi)置數(shù)據(jù)結(jié)構(gòu),用于存儲PHP變量)中存儲的已知字符串長度。但是,由于strlen()是函數(shù),多多少少會有些慢,因?yàn)楹瘮?shù)調(diào)用會經(jīng)過諸多步驟,如字母小寫化(譯注:指函數(shù)名小寫化,PHP不區(qū)分函數(shù)名大小寫)、哈希查找,會跟隨被調(diào)用的函數(shù)一起執(zhí)行。在某些情況下,你可以使用isset() 技巧加速執(zhí)行你的代碼。
if (strlen($foo) < 5) { echo “Foo is too short”$$ } //與下面進(jìn)行比較if (!isset($foo{5})) { echo “Foo is too short”$$ }
調(diào)用isset()恰巧比strlen()快,因?yàn)榕c后者不同的是,isset()作為一種語言結(jié)構(gòu),意味著它的執(zhí)行不需要函數(shù)查找和字母小寫化。也就是說,實(shí)際上在檢驗(yàn)字符串長度的頂層代碼中你沒有花太多開銷。
?
推薦文章
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
穩(wěn)定
產(chǎn)品高可用性高并發(fā)貼心
項(xiàng)目群及時(shí)溝通專業(yè)
產(chǎn)品經(jīng)理1v1支持快速
MVP模式小步快跑承諾
我們選擇聲譽(yù)堅(jiān)持
10年專注高端品質(zhì)開發(fā)聯(lián)系我們
友情鏈接: