如果属性不存在,则显示空字符串

时间:2018-06-04 07:45:34

标签: php

在较低版本的php中,我曾使用以下代码在页面中显示对象属性:

  <input type=text value='<?php echo $obj->title ;?>'>

在编辑模式下,$ obj是从数据库中获取的对象,用户可以看到已存在的值, 并且对于插入模式,没有$ obj,因为没有$ _GET [&#34; obj_id&#34;]并且$ obj没有被定义,因此输入字段显示为空,

在新版本中,php会停止插入页面,因为$ obj未定义或没有名为title的属性, 所以我应该使用这样的东西:

<input type=text value='<?php echo isset($obj)?$obj->title:"" ;?>'>

现在我想做的是缩短一些时间,我创建了一个类似下面的函数,但它似乎不起作用并且一直显示错误,

function showprop($obj,$prop)
{
if( isset($obj) )
 echo $obj->{$prop};
else
 echo "";
}

<input type=text value='<?php showprop($obj,"title");?>'>

有任何建议在没有得到通知的情况下完成这项工作吗? 提前致谢

2 个答案:

答案 0 :(得分:4)

函数不起作用,因为PHP会在将其值传递给函数之前尝试解析$obj,因此您仍然会遇到同样的问题。

使用null coalescing operator代替(从PHP 7获得):

<?= $obj->title ?? '' ?>

答案 1 :(得分:1)

由于$obj未定义,因此无法正常工作。但是你可以将名称的变量传递给函数并检查是否在该函数中定义了全局变量 - 但这很难看:

function showprop($obj,$prop)
{
    if( isset($_GLOBALS[$obj]) )
        echo $_GLOBALS[$obj]->{$prop};
    else
        echo "";
}

<input type=text value='<?php showprop('obj',"title");?>'>