in_array數組誤區
官方實例
<?php
$people = array("Bill", "Steve", "Mark", "David");
if (in_array("Mark", $people))
{
echo "匹配已找到";
}
else
{
echo "匹配未找到";
}
?>
運行實例
匹配已找到
今天在公司寫代碼的時候突然用到了
in_array()函數,就是為了搜索數組中是否存在指定的值。現提取部分代碼如下:
<?php
//判斷某定制產品是否在數組中
$search = '68226:dscsdsdgwsdggocs'; //某定制產品
$data = array(
39578,68226,48257
);
if(in_array($search,$data)){
echo '匹配已找到';
}else{
echo '匹配未找到';
}
?>
運行結果
匹配已找到
後來我查看了一下文檔,還有第三個參數(可選參數:強制對數據類型進行檢測)。
語法
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
參數 | 描述 |
---|
needle | 必需。規定要在數組搜索的值。 |
haystack | 必需。規定要搜索的數組。 |
strict | 可選。如果設置該參數為 true,則檢查搜索的數據與數組的值的類型是否相同。 |
說明
如果給定的值 search 存在於數組 array 中則返回 true。如果第三個參數設置為 true,函數只有在元素存在於數組中且數據類型與給定值相同時才返回 true。
如果沒有在數組中找到參數,函數返回 false。
注釋:如果 search 參數是字符串,且 type 參數設置為 true,則搜索區分大小寫。
總結
第三個參數默認為 false,當 needle 和 haystack 中的元素比較時會進行類型轉換,相當於使用 == 進行比較。如果我們填寫第三個參數為true那麼就相當於使用===來進行比較,所以我們應該根據當前的環境來進行判斷第三個參數是否進行填寫。