這篇文章帶給大家的內容是關於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
##需要需要需要需要需要需要需要需要就需要 bool## needle尋找的元素
haystack
被尋找的陣列
strict
如果該參數設為true,則會使用嚴格比較模式去尋找元素。也就是說,在查找時,不僅比對要尋找的元素與數組元素的值,還會比對其類型。預設為false。
在忽略第三個參數的情況下,文章開頭的問題輸出會是true。因為未使用嚴格比較,那麼函數在處理字串與數字的比較時會嘗試將字串轉換為整形/浮點型來做比較,例如'12ax'會轉換為12。那麼,上面的‘06’則會轉換為6,因此輸出為true。
而一開始自己並未註意到該函數具備第三個參數的設置,導致無論如何都得不到自己想要的結果
以上是php中in_array函數的用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!