今天看见一张 php 面试图片(一)

早上看见群里有人发了张关于PHP面试的题目,一共23道题目,我也来答下题目吧。

array_key_exists()

array_key_exists会检查键值的存在。这个函数会返回true,只要键值存在,即使值为null

1
2
3
4
5
6
7
8
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'orange' => null
];
array_key_exists("apple", $fruits);
array_key_exists("banana", $fruits);
array_key_exists("orange", $fruits); // true

8 行

1
array_key_exists("orange", $fruits);      // true

使用array_key_exists("orange", $fruits)返回值为true

isset()

issetarray_key_exists不同,isset会同时检查键和值,只有当健存在,对应的变量不为null的时候才会返回true

1
2
3
4
5
6
7
8
$fruits = [
'apple' => 'red',
'banana' => 'yellow',
'orange' => null
];
isset($fruits["apple"]);
isset($fruits["banana"]);
isset($fruits["orange"]); // false

8 行

1
isset($fruits["orange"]);     // false

使用isset($fruits["orange"])返回值为false

总结:

基本的区别是isset可用于数组和变量,array_key_exists只能用于数组,但是最主要的区别在于在设定的条件下的返回值,该用哪个取决于应用程序的需求。