我一直在考虑使用引用赋值作为处理潜在未定义变量的快捷方式。
换句话说,而不是:
$foo = isset($this->blah['something']['else']) ? $this->blah['something']['else'] : null;
if (!is_null($foo) && ...){
//do something with $foo
}
我可以这样做:
$foo = &$this->blah['something']['else'];
if (!is_null($foo) && ...){
//do something with $foo
}
似乎更简单,对吧?由于PHP通过引用处理赋值的方式,我不必担心定义$ this-> blah ['something'] ['else'],因为如果它不存在,它将自动创建并且设置为NULL。
这种策略不受欢迎吗?
答案 0 :(得分:0)
我个人认为可能更传统,但是分配这样的推荐值对我来说似乎有点多余。在你的情况下,我会坚持使用更常用的三元运算符。通常,理解起来要清楚得多。当然,你应该尽可能地遵循你的个人语义。
答案 1 :(得分:0)
如果您只想测试变量是否设置而不是null,那么最好测试一下:
if (! empty($this->blah['something']['else'])) {...}
这样就可以避免创建对一个甚至不存在的值的两个引用。
在我看来,每次创建一个相同值的新引用时,您的代码一目了然变得难以理解。
如果你需要零作为非空,那么你最好创建一个像这样的全局函数:
function eempty(& $var) {
return empty($var) && $var !== 0;
}