您好,登錄后才能下訂單哦!
這篇文章為大家帶來有關php中in_array函數的詳細介紹。大部分知識點都是大家經常用到的,為此分享給大家做個參考。一起跟隨小編過來看看吧。
以下代碼,你覺得會輸出true還是false?
1 <?php 2 $data = [6,9]; 3 var_dump(in_array('06',$data));
今天在調試代碼的時候發現一個關于in_array的錯誤使用方式導致的一個bug。在PHP中,數組是一個十分強大的數據結構,官方提供了特別多的數組操作函數,in_array()是比較常用的一個,我們經常會用它來判斷數組中是否包含某個元素。但我們可能會在使用時忽略掉該函數的第三個參數而導致一類bug的產生。
官方函數定義:
in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
: bool
needle
需要查找的元素
haystack
被查找的數組
strict
如果該參數設置為true,則會使用嚴格比較模式去尋找元素。也就是說,在查找時,不僅比對要查找的元素與數組元素的值,還會比對其類型。默認為false。
在忽略第三個參數的情況下,文章開頭的問題輸出會是true。因為未使用嚴格比較,那么函數在處理字符串與數字的比較時會嘗試將字符串轉換為整形/浮點型來做比較,比如'12ax'會轉換為12。那么,上面的‘06’則會轉換為6,因此輸出為true。
而一開始自己并未注意到該函數具備第三個參數的設置,導致無論如何都得不到自己想要的結果
以上就是php中in_array函數的知識匯總,內容較為全面,小編相信有部分知識點可能是我們日常工作可能會見到或用到的。希望你能通過這篇文章學到更多知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。