摘要:官方函數(shù)定義需要查找的元素被查找的數(shù)組如果該參數(shù)設(shè)置為,則會使用嚴(yán)格比較模式去尋找元素。也就是說,在查找時(shí),不僅比對要查找的元素與數(shù)組元素的值,還會比對其類型。在忽略第三個(gè)參數(shù)的情況下,文章開頭的問題輸出會是。
本文首發(fā)地址為hilsion的博客
以下代碼,你覺得會輸出true還是false?
1今天在調(diào)試代碼的時(shí)候發(fā)現(xiàn)一個(gè)關(guān)于in_array的錯(cuò)誤使用方式導(dǎo)致的一個(gè)bug。在PHP中,數(shù)組是一個(gè)十分強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),官方提供了特別多的數(shù)組操作函數(shù),in_array()是比較常用的一個(gè),我們經(jīng)常會用它來判斷數(shù)組中是否包含某個(gè)元素。但我們可能會在使用時(shí)忽略掉該函數(shù)的第三個(gè)參數(shù)而導(dǎo)致一類bug的產(chǎn)生。
官方函數(shù)定義:in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
: boolneedle
需要查找的元素haystack
被查找的數(shù)組strict
如果該參數(shù)設(shè)置為true,則會使用嚴(yán)格比較模式去尋找元素。也就是說,在查找時(shí),不僅比對要查找的元素與數(shù)組元素的值,還會比對其類型。默認(rèn)為false。在忽略第三個(gè)參數(shù)的情況下,文章開頭的問題輸出會是true。因?yàn)槲词褂脟?yán)格比較,那么函數(shù)在處理字符串與數(shù)字的比較時(shí)會嘗試將字符串轉(zhuǎn)換為整形/浮點(diǎn)型來做比較,比如"12ax"會轉(zhuǎn)換為12。那么,上面的‘06’則會轉(zhuǎn)換為6,因此輸出為true。
而一開始自己并未注意到該函數(shù)具備第三個(gè)參數(shù)的設(shè)置,導(dǎo)致無論如何都得不到自己想要的結(jié)果
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/30993.html
摘要:背景在公司入職,老大讓我去做數(shù)據(jù)脫敏,通過調(diào)用運(yùn)維組的數(shù)據(jù)脫敏接口,保證用戶的敏感的信息不落地。公司項(xiàng)目主要使用和版本。 背景: 在A公司入職,老大讓我去做數(shù)據(jù)脫敏,通過調(diào)用運(yùn)維組的數(shù)據(jù)脫敏接口,保證用戶的敏感的信息不落地。公司項(xiàng)目主要使用laravel5.1 和 YII1.1 版本。 具體方案: 敏感信息字段的調(diào)用存在與代碼中的各個(gè)角落,如果手動對每一個(gè)地方的代碼都去擼一邊,所需要耗...
摘要:由于上傳后文件后綴仍為,服務(wù)器仍將該上傳文件以解析。文件是服務(wù)器中的一個(gè)配置文件,它負(fù)責(zé)相關(guān)目錄下的網(wǎng)頁配置。文件流實(shí)際應(yīng)用文件系統(tǒng)包括對備用數(shù)據(jù)流的支持。在中,此默認(rèn)數(shù)據(jù)流稱為。 靶機(jī)搭建 推薦使用Windows系統(tǒng)搭建,我最先使用docker pull c0ny1/upload-labs的鏡像在Pass-03遇到問題,初步判斷是該鏡像內(nèi)的php.conf文件配置錯(cuò)誤導(dǎo)致。 下載地...
摘要:示例先來看一個(gè)小示例輸出為解釋根據(jù)官方文檔函數(shù)的描述在中搜索,如果沒有設(shè)置則使用寬松的比較。第三個(gè)參數(shù)默認(rèn)為,當(dāng)和中的元素比較時(shí)會進(jìn)行類型轉(zhuǎn)換,相當(dāng)于使用進(jìn)行比較。值為默認(rèn)值時(shí),相當(dāng)于,值為時(shí),相當(dāng)于。 示例 先來看一個(gè)小示例: $needle = 1abc; $haystack = array(1,2,3); var_dump(in_array($needle, $haystack)...
摘要:復(fù)雜的條件在的條件查詢中,不只有這些基本的子句,還有等復(fù)雜一些的子句。這篇我們就來講一下查詢構(gòu)造器如何構(gòu)造這些復(fù)雜的查詢語句。 復(fù)雜的條件 在 SQL 的條件查詢中,不只有 where、or where 這些基本的子句,還有 where in、where exists、where between 等復(fù)雜一些的子句。而且即使是 where 這種基礎(chǔ)的子句,也有多個(gè)條件的多種邏輯組合。這篇...
摘要:關(guān)聯(lián)數(shù)組變量是否已設(shè)置并且非。返回?cái)?shù)組所有值。成功返回失敗返回原數(shù)組值需要能作為合法鍵名需要是或。內(nèi)部指針數(shù)組分段棧隊(duì)列回調(diào)函數(shù)排序計(jì)算數(shù)組生成其他 關(guān)聯(lián)數(shù)組 isset bool isset( mixed $val [, mix $...]) 變量是否已設(shè)置并且非null。多個(gè)參數(shù)從左到右計(jì)算。 判斷null $a=null;var_dump(isset($a));bool(fal...
閱讀 4233·2023-04-26 01:48
閱讀 3354·2021-10-13 09:40
閱讀 1815·2021-09-26 09:55
閱讀 3721·2021-08-12 13:23
閱讀 1963·2021-07-25 21:37
閱讀 3512·2019-08-30 15:53
閱讀 1459·2019-08-29 14:16
閱讀 1457·2019-08-29 12:59