PHP - 检查数组索引是否存在或为空

48
有没有一种方法可以检查数组索引是否存在或为null? isset()不能告诉你索引不存在还是存在但为null。 如果我这样做:isset($array[$index]) || is_null($array[$index]),它不起作用,因为如果索引不存在,is_null会崩溃。
请问如何检查这个问题?此外,有没有一种方法只检查某些东西是否存在,而不管它是否设置为null?

嵌套的 if 结构中使用相同的 if 语句行不行呢? - christopher
3个回答

47

1
在对象上使用array_key_exists()已经被弃用。 - Asish
1
@Asish 没有人说过应该这样做。而且这个问题已经8年了,显然事情已经发展变化了。 - Virus721
是的,这就是我提到它的原因。但在我的情况下它并没有起作用。所以,.. - Asish
这个答案在2022年仍然有效。对于数组(而不是对象),可以使用array_key_exists函数,对于对象,则可以使用property_exists函数。 - Dave S

22

这是一个很好的问题,你可以使用get_defined_vars()函数来实现:

$foo = NULL;
$a = get_defined_vars();

if (array_key_exists('def', $a)) {
   // Should evaluate to FALSE
 }; 

if (array_key_exists('foo', $a)) {
   // Should evaluate to TRUE
};

这将解决您的问题


好的,但是请在其中加入array_key_exist的内容。 - Virus721

11

定义最简单的方式在于: http://php.net/manual/zh/function.array-key-exists.php

<?php
$array=array('raja'=>'value', 'john'=>'value2');
$var='raja';
echo array_key_exists($var, $array);
?>

或者

<?php
$array=array('raja'=>'value', 'john'=>'value2');

echo isset($array['raja']) ? "exists" : "does not exist";
?>
//Output: exists

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接