我知道PHP没有一个纯对象变量,但我想检查属性是否在给定的对象或类中。
$ob = (object) array('a' => 1, 'b' => 12);
or
$ob = new stdClass;
$ob->a = 1;
$ob->b = 2;
在JS中,我可以写这个来检查变量a是否存在于一个对象中:
if ('a' in ob)
在PHP中,可以做到这一点吗?
我知道PHP没有一个纯对象变量,但我想检查属性是否在给定的对象或类中。
$ob = (object) array('a' => 1, 'b' => 12);
or
$ob = new stdClass;
$ob->a = 1;
$ob->b = 2;
在JS中,我可以写这个来检查变量a是否存在于一个对象中:
if ('a' in ob)
在PHP中,可以做到这一点吗?
当前回答
这是非常新的,所以请确保您运行的是PHP 8:
$ob?->a
参考链接
其他回答
要检查属性是否存在,以及是否也为空,可以使用函数property_exists()。
文档:http://php.net/manual/en/function.property-exists.php
与isset()相反,即使属性值为NULL, property_exists()也会返回TRUE。
Bool类型:property_exists(混合$class,字符串$property)
例子:
if (property_exists($testObject, $property)) {
//do something
}
如果您想知道某个属性是否存在于已定义的类的实例中,只需将property_exists()与isset()结合起来即可。
public function hasProperty($property)
{
return property_exists($this, $property) && isset($this->$property);
}
这是非常新的,所以请确保您运行的是PHP 8:
$ob?->a
参考链接
要检查是否存在某些内容,可以使用PHP函数isset(),参见php.net。这个函数将检查变量是否已设置且不为NULL。
例子:
if(isset($obj->a))
{
//do something
}
如果需要检查类中是否存在某个属性,则可以使用内建函数property_exists()
例子:
if (property_exists('class', $property)) {
//do something
}
在php 7.4中已弃用对象上的array_key_exists()
相反,应该使用isset()或property_exists()
参考:php.net