2013-11-09 32 views
0
$loc = (isset($this->news_options[$this->reference]['generate'])) 
? $this->news_options[$this->reference]['generate'] : array(); 

将它放在2行上,以便阅读。所以基本上有什么方法可以引用在问号后面检查的初始数组键?我不能将它作为一个变量存储为 ,因为如果未设置密钥,将会出现错误。是否有反正在PHP中缩短这个三元语句?

那么有什么其他方式在PHP中做如下的事情吗?

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

我可能会错过一些完全明显的东西,但我似乎无法弄清楚!

+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即可。

0

哇,很抱歉,在发布之后马上明白了这一点。我只需要将我知道肯定会在那里的数组部分分配给一个变量。

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

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

(这基本上是[我的答案](http://stackoverflow.com/a/19874628/1438393)建议:P –

+0

哈哈,谢谢你! –