我经常发现自己写的是这样的:
$val = (isset($dog->owner->name)) ? $dog->owner->name : "no owner";
因为如果你试图评估一个不存在的变量,PHP会抛出一个错误,以下内容将不起作用(PHP 5.3及更高版本用于新的速记三元语法):
$val = ($dog->owner->name) ?: "no owner";
如果您关闭E_USER_NOTICE
报告,则可以实现上述目标,这不是我想要做的事情。
如果定义了变量值,是否会返回一个PHP命令?
答案 0 :(得分:3)
PHP没有这样的东西,但你可以自己创建。关键是通过引用传递:
function getVar(&$var, $default=null) {
if( isset($var) ) return $var;
else return $default;
}
$blah = getVar($blah, "my default value");
答案 1 :(得分:0)
没有命令检查变量是否已分配值而未执行您已完成的操作。您将不得不执行检查或明确确保您的变量具有值。将所有者的名称添加为类构造函数中的参数,或者在创建对象时为其指定默认值。您还可以创建一个执行此任务的方法,以便重用代码。
答案 2 :(得分:-3)
@$val = $dog->owner->name ?: "no owner";
echo $val, "\r\n";
你会得到你想要的东西。