PHP中是否有函数或Codeigniter中的帮助程序可以更快地执行以下操作?
echo isset($c['some_var']) ? $c['some_var'] : '';
如果我这样做
echo $c['some_var']
并且索引未定义,我收到了PHP警告。
如果变量未定义或索引未设置,我希望它只输出一个空字符串。
是否有CI助手或PHP方式输出它?
答案 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']);