$arr = array('name' => 'test', '***' => 'male','age' => 0);
if(in_array('h232',$arr)) else結果輸出 : 'yes'
查詢手冊,手冊上也只是說in_array() : 檢查資料中是否存在某個值。
in_array( mixed$needle
, array$haystack
[, bool$strict
=false
] )
neddle : 待搜尋的值
note:
如果needle
是字串,則比較是區分大小寫的。
haystack
待搜尋的陣列。
note:
如果haystack只適合一維陣列
。
strict
如果第三個引數strict
的值為true
則in_array()函式還會檢查needle
的型別是否和haystack
中的相同
返回值:
如果找到needle
則返回true
,否則返回false
。
但是,手冊中沒說具體是怎麼查詢的,經過分析。in_array()函式的value值會與搜尋的值比較,如果不加第三個引數,in_array()會把搜尋的型別強制轉換成和value值一樣進行比較。
所以,上面的搜尋值 『h232』 在和value = 0 進行比較的時候 『h234』強制轉換成了number 0;
相當於 : var_dump('h232' == 0 ) = true;
結果為 : 'yes';
希望大家以後多多注意~
php中in array函式用法分析
php是弱型別語言 在使用in array函式時盡量帶上第三個引數,如下 複製 如下 var dump in array 0,array s sss true return false var dump in arrdobosay 0,array s sss n程式設計客棧bsp return tr...
in array 的那些坑
認證狀態 0 待審核,1 審核通過,2 不通過echo in array array 0 1 0 結果 1 echo in array null,array 0 1 0 結果 1 echo in array false,array 0 1 0 結果 1這麼大乙個坑,我們要怎麼繞過或者填起呢?echo...
PHP5 3中 in array 的乙個坑
因排查問題,發現目前生產環境的php版本5.3中有這個問題 echophp int max str 114100007160061630632 arr array 114100007160061630631 var dump in array str,arr echo php phpversion ...