有没有在PHP中缩短这个三元语句?

时间:2013-11-09 09:53:09

标签: php arrays

$loc = (isset($this->news_options[$this->reference]['generate']))
? $this->news_options[$this->reference]['generate'] : array();

将它放在2行上,这样更容易阅读。所以基本上有没有办法引用问号后检查的初始数组键?我无法将其存储为变量 因为如果未设置密钥,我将收到错误。

那么还有其他方法可以在PHP中执行以下操作吗?

$loc = (isset($this->news_options[$this->reference]['generate'])) ? <-assign that to loc : array();

我可能会遗漏一些完全明显的东西,但我似乎无法解决这个问题!

2 个答案:

答案 0 :(得分:1)

使用另一个带isset()的三元语句将键值赋给变量,如下所示:

$generate = (isset($this->news_options[$this->reference]['generate']) ?
$this->news_options[$this->reference]['generate'] : NULL ;

现在你可以做到:

$loc = (isset($generate))
? $this->news_options[$this->reference]['generate'] : array();

如果您要分配的变量与$generate变量相同,则只需将第二个三元语句中的$this->news_options[$this->reference]['generate']替换为$generate

答案 1 :(得分:0)

对不起,发布后就知道了。我只需要首先将我知道的数组部分分配给变量。

$part1 = $this->news_options[$this->reference];

$loc = (isset($part1['generate'])) ? $part1['generate'] : array();