首頁  >  文章  >  後端開發  >  php中in_array函數的用法介紹

php中in_array函數的用法介紹

不言
不言轉載
2019-03-11 16:18:323229瀏覽

這篇文章帶給大家的內容是關於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中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除