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