2011-01-20 85 views
0

我不明白這個數組訪問語法:我不明白這個數組語法

$target[$segs[count($segs)]] 

難道真的有可能使用變量作爲多維數組的鑰匙?

+3

你幾乎在很多分鐘內就問過四次同樣的問題。請停止打開新的問題,並在適當的情況下更新現有的問題。 – 2011-01-20 18:14:12

+0

[在什麼情況下我們使用這個php數組?]可能的重複(http://stackoverflow.com/questions/4732528/at-what-scene-do-we-use-this-php-array) – 2011-01-20 18:16:34

回答

3

如果$segs是僅具有連續索引的數值數組,則可能會導致錯誤。
含義,它會失敗:

array("foo","bar"); 

,但工作了

array("foo", 2=>"bar"); 

現在假設,我們對付第一種情況,那麼這會工作:

$target[$segs[count($segs) - 1]] 

第一,count($segs) - 1將被評估並返回一個數字。在這種情況下,最後一個索引$segs(假設它是一個數值數組)。

$segs[count($segs) - 1]因此將返回最後一個元素$segs。無論價值是什麼,都將被用作$target[...]的索引。


綜上所述:它是嵌套數組索引和內向外進行評價。

See it in action.

無論這種方法是必要的取決於你正在試圖解決的問題。如果你不知道在哪裏使用這種嵌套的可變數組索引,那麼你可能不需要它。

2

該語法沒問題,只要$segs是一個數組。但值得注意的是,如果您使用的數字索引數組爲$segs,則調用count($segs)是不存在的鍵,因爲索引從零開始。