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