in_array()
函數在 PHP 中用于檢查一個數組中是否存在指定的值
in_array()
默認情況下會同時比較元素的值和類型。如果需要比較值而不考慮類型,可以將第三個參數設置為 true
。例如:$array = [1, 2, 3];
$value = '1';
// 使用默認的類型比較,結果為 false
if (in_array($value, $array)) {
echo "Found";
} else {
echo "Not found";
}
// 使用值比較,結果為 true
if (in_array($value, $array, true)) {
echo "Found";
} else {
echo "Not found";
}
鍵名:in_array()
只比較數組的值,而不考慮鍵名。如果需要根據鍵名進行搜索,請使用 array_key_exists()
或 isset()
函數。
多維數組:in_array()
不能直接在多維數組中搜索值。你需要編寫一個自定義函數來處理這種情況。例如:
function in_array_recursive($needle, $haystack) {
foreach ($haystack as $item) {
if ($item == $needle || (is_array($item) && in_array_recursive($needle, $item))) {
return true;
}
}
return false;
}
$multiDimensionalArray = [[1, 2], [3, 4]];
$value = 3;
if (in_array_recursive($value, $multiDimensionalArray)) {
echo "Found";
} else {
echo "Not found";
}
in_array()
對字符串是大小寫敏感的。如果需要進行大小寫不敏感的比較,可以在搜索之前將所有字符串轉換為小寫(或大寫)。例如:$array = ['Apple', 'Banana', 'Cherry'];
$value = 'apple';
// 轉換為小寫
$array = array_map('strtolower', $array);
$value = strtolower($value);
if (in_array($value, $array)) {
echo "Found";
} else {
echo "Not found";
}
檢查這些原因,確保在使用 in_array()
時正確處理數據類型、鍵名和大小寫等問題。