推荐答案
在 PHP 中,可以使用以下方法来判断数组中是否存在某个键或值:
- 判断键是否存在:使用
array_key_exists()函数或isset()函数。 - 判断值是否存在:使用
in_array()函数。
判断键是否存在
// www.javascriptcn.com code example
$array = ['name' => 'John', 'age' => 25];
// 使用 array_key_exists()
if (array_key_exists('name', $array)) {
echo '键 "name" 存在';
}
// 使用 isset()
if (isset($array['name'])) {
echo '键 "name" 存在';
}判断值是否存在
$array = ['apple', 'banana', 'cherry'];
// 使用 in_array()
if (in_array('banana', $array)) {
echo '值 "banana" 存在';
}本题详细解读
1. 判断键是否存在
array_key_exists($key, $array):该函数用于检查数组中是否存在指定的键。如果键存在,返回true,否则返回false。即使键对应的值为null,该函数也会返回true。isset($array[$key]):该函数用于检查数组中是否存在指定的键,并且该键对应的值不为null。如果键存在且值不为null,返回true,否则返回false。
2. 判断值是否存在
in_array($value, $array):该函数用于检查数组中是否存在指定的值。如果值存在,返回true,否则返回false。该函数默认是区分大小写的,可以通过第三个参数设置为true来进行严格类型比较。
注意事项
array_key_exists()与isset()的区别:array_key_exists()会检查键是否存在,即使值为null也会返回true。而isset()只有在键存在且值不为null时才会返回true。in_array()的严格模式:默认情况下,in_array()是松散比较的,即'1'和1会被认为是相等的。如果需要进行严格比较,可以将第三个参数设置为true。
// www.javascriptcn.com code example
$array = ['1', '2', '3'];
// 松散比较
if (in_array(1, $array)) {
echo '值 1 存在(松散比较)';
}
// 严格比较
if (in_array(1, $array, true)) {
echo '值 1 存在(严格比较)';
}在严格比较模式下,in_array(1, $array, true) 将返回 false,因为 1 和 '1' 类型不同。