首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP in_array() 檢查陣列值存在性完整用法與嚴格模式詳解

     編輯:PHP 相關知識

PHP in_array() 檢查陣列值存在性完整用法與嚴格模式詳解

in_array() 是判斷值是否存在於陣列的標準函式,關鍵在於理解嚴格模式對型別比較的影響。

語法

bool in_array(mixed $needle, array $haystack, bool $strict = false)

參數說明

基本範例

$arr = ['a', 'b', 'c', 1];

// 鬆散比較(預設)
in_array('a', $arr);        // true
in_array('1', $arr);        // true  ← 字串 "1" == 整數 1
in_array(true, $arr);       // true  ← true == 1

// 嚴格比較
in_array('1', $arr, true);  // false (字串 !== 整數)
in_array(1, $arr, true);    // true
in_array(true, $arr, true); // false (bool !== int)

陣列作為 needle 搜尋

$arr = [['a', 'b'], 1, 2];
$sub = ['a', 'b'];

in_array($sub, $arr);       // true
in_array(['a', 'b'], $arr); // true (PHP 會比較陣列結構)

效能注意事項

  • 大陣列(>1000 元素)頻繁搜尋 → 改用 array_flip() + isset():O(1) 查找
  • $flipped = array_flip($largeArr); isset($flipped[$needle])
  • 關聯陣列查鍵名 → 用 array_key_exists() 或 isset()

常見誤區

參數說明
$needle搜尋的值,字串區分大小寫
$haystack被搜尋的陣列
$stricttrue=嚴格比較(值+型別),false=鬆散比較(預設)
誤區正確認知
預設模式型別安全鬆散比較會型別轉換,"1"==1、true==1、null==false
搜尋鍵名用 in_array搜尋鍵名請用 array_key_exists() 或 isset()
多維陣列直接搜尋只搜尋第一層,需遞迴或 array_walk_recursive

相關函式

  • array_search($needle, $haystack):回傳找到的**鍵名**(找不到回傳 false)
  • array_keys($haystack, $needle):回傳**所有匹配的鍵名**陣列
  • array_key_exists($key, $arr):檢查**鍵名**是否存在(值為 null 也回傳 true)
  • isset($arr[$key]):檢查鍵名存在且值不為 null(效能最好)

牢記 in_array($v, $arr, true) 開啟嚴格模式避免型別轉換陷阱,大陣列查找用 array_flip() + isset() 優化效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved