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


How to output an empty string if array index is undefined (inside templates)?

PHP中是否有函数或Codeigniter中的助手可以更快地完成以下操作?

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

如果我只做

echo $c['some_var']

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

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

有没有CI帮助程序或PHP方法来输出它?

是的,您可以使用默认的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

"因此,虽然是的,但每次迭代都会有一些开销,我们看到@operator每次调用只增加了.005毫秒。这还不够,imho,避免使用@operator"

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

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

编辑:请注意,我强烈建议不要抑制错误。在所有的现实中,三元运算符是实现这一点的最佳方法。由于我不喜欢写那么多代码只使用变量的值(如果设置了)和NULL(否则为NULL),所以我使用了上面的helper函数。

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

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

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

让你的船漂浮的东西。

编辑:这里有一个关于CodeIgniter:中助手的有用链接

  • https://www.codeigniter.com/user_guide/general/helpers.html

仅此而已:

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