如果数组索引未定义(模板内部),如何输出空字符串?

时间:2014-09-10 15:33:55

标签: php codeigniter

PHP中是否有函数或Codeigniter中的帮助程序可以更快地执行以下操作?

echo isset($c['some_var']) ? $c['some_var'] : '';

如果我这样做

echo $c['some_var']

并且索引未定义,我收到了PHP警告。

如果变量未定义或索引未设置,我希望它只输出一个空字符串。

是否有CI助手或PHP方式输出它?

3 个答案:

答案 0 :(得分:3)

是的,您可以使用默认的PHP错误控制操作符(@)来抑制警告。

echo @$c['some_var'];
echo @$c['some_var']['go_deep']['deeper']; //this also works

php短标签相同

<?=@$c['some_key']?>

http://php.net/manual/en/language.operators.errorcontrol.php

性能影响很小,请参阅

http://php.net/manual/en/language.operators.errorcontrol.php#102543

&#34;因此,虽然是,但每次迭代都有一些开销,我们看到@运算符每次调用仅添加.005 ms。没有理由,imho,以避免使用@运算符&#34;

答案 1 :(得分:1)

就个人而言,我创建了一个自定义助手并添加以下内容:

if(!function_exists('issetor'))
{
    function issetor(&$var, $default = NULL)
    {
        return isset($var)? $var : $default;
    }
}

修改:作为备注,我强烈建议不要进行错误抑制。实际上,三元运算符是实现此目的的最佳方式。因为我不喜欢编写那么多代码只是为了使用变量的值,如果设置为NULL,否则我使用上面的辅助函数。

示例用法,与您问题中的代码相关:

echo issetor($c['some_var'], '');

$c['some_var'] = issetor($c['some_var'], '');
echo $c['some_var'];

无论漂浮在你的船上。

修改:以下是有关CodeIgniter中帮助程序的有用链接:

答案 2 :(得分:0)

就是这样:

 print '' or isset($c['some_var']);