2012-07-06 37 views
1

我有一個這樣的陣列:翻譯串入參考關聯數組索引在PHP

[0] => [basketball][player] 
[1] => [basketball][threes][player] 
[2] => [basketball][home][leaders][player] 
[3] => [basketball][away][leaders][player] 

欲每個元素轉換成在一個關聯數組一個參照本發明的特定元素:

$post['basketball']['player'] 
$post['basketball']['threes']['player'] 
etc. 

有沒有辦法將前者自動轉換爲後者?如果是這樣,這將是非常方便的,如果不是,可能會超級不方便,所以我希望有一種方法,但我不知道它會是什麼。

回答

2

我要說的是這樣的:(使用substr

  • 剝去[在開始和]
  • 使用explode字符串由][
  • 遍歷分裂爆炸件,使用它們作爲陣列的關鍵。

因此,像這樣:

$array = ..... // the big array 
$str = "[basketball][player]"; 
$keys = explode("][",substr($str,1,-1)); 
$pos = $array; // PHP does a lazy copy, so there is no performance issue here 
while($key = array_shift($keys)) $pos = $pos[$key]; 
// $pos is now your target element 
+0

感謝您的回答。不幸的是,它似乎並不奏效。當我想要的是'$ pos ['basketball'] ['player']'時,我相信這會試圖讓'$ pos ['basketball']'和'$ pos ['player']'分開。 (這個結論是基於將此代碼複製並粘貼到我的應用程序中並嘗試使用它。) – 2012-07-06 17:48:53

+0

您是正確的,它會獲得'$ pos ['basketball']'後跟'$ pos ['player']',但它會分配回到'$ pos',所以結果是'$ pos ['basketball'] ['player']'。 – 2012-07-06 18:09:42