編碼的世界 / 優質文選 / 文明

關於正確使用PHP的in_array數組


2022年5月25日
-   

in_array數組誤區
官方實例
  • 在數組中搜索值 “Mark” ,並輸出一些文本:

<?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那麼就相當於使用===來進行比較,所以我們應該根據當前的環境來進行判斷第三個參數是否進行填寫。

熱門文章