如果变量存在则返回值的命令?

时间:2014-05-07 02:29:52

标签: php

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

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

因为如果你试图评估一个不存在的变量,PHP会抛出一个错误,以下内容将不起作用(PHP 5.3及更高版本用于新的速记三元语法):

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

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

如果定义了变量值,是否会返回一个PHP命令?

3 个答案:

答案 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)

您可以尝试Error control operaors @

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

你会得到你想要的东西。