如果变量存在,命令返回值


Command to return value if variable exists?

我经常发现自己写这样的东西:

$val = (isset($dog->owner->name)) ? $dog->owner->name : "no owner";

由于PHP在尝试计算不存在的变量时会抛出错误,因此以下操作将无法工作(PHP 5.3及以上版本适用于新的简写三元语法):

$val = ($dog->owner->name) ?: "no owner";

如果您关闭E_USER_NOTICE报告,您可以实现上述目标,这不是我想做的事情。

是否有一个PHP命令,将返回一个变量的值,如果它被定义?

PHP没有这样的东西,但是您可以创建自己的。键是通过引用传递的:

function getVar(&$var, $default=null) {
    if( isset($var) ) return $var;
    else return $default;
}
$blah = getVar($blah, "my default value");

不,如果不执行您已经执行的操作,则没有命令检查变量是否已赋值。您必须执行检查或显式地确保变量具有值。在类构造函数中添加所有者的名字作为参数,或者在对象创建时给它一个默认赋值。您还可以创建一个方法来执行此任务,以便您可以重用代码。

您可以尝试错误控制操作符@

@$val = $dog->owner->name ?: "no owner";
echo $val, "'r'n";

你会得到你想要的