2013-11-09 59 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

哈哈,謝謝你! –