2012-05-03 57 views
1

我想創建一個數組,看起來像這樣如何在foreach循環中創建一個多維關聯數組?

$appsByOs = Array(
        osName1 =>Array(0=>app1,1=>app2) 
        osName2 =>Array(0=>app1,1=>app2) 
        etc..... 
) 

我怎麼能做到這一點foreach循環的內部?

foreach($osInstanceNames as $osInstanceName){ 
        $appNames(array of app names for current os) 

      } 

感謝

+0

能否請你澄清你就想動態創建什麼樣的可能性。是否它已經有一個填充$ appNames的方法動態創建$ appsByOs。如果是$ appNames,請給我們提供一些關於$ appNames – Anigel

+0

的數據源的線索,它是動態創建$ appsByOs的。 $ appNames已經由根據每個osInstanceName運行的查詢填充。 – arrowill12

+0

我在下面的答案創建$ appsByOs動態填充osName鍵與當前osName並分配$ appNames中的任何值。它沒有做的是爲每個操作系統填充不同數據的$ appNames。你需要調用一個函數來爲每個操作系統獲取不同的數據到$ appNames,否則每個操作系統都會列出相同的應用程序。 – Anigel

回答

0

所有你應該需要做的就是這個。

$appsByOs = Array(); 
foreach($osInstanceNames as $osInstanceName){ 
        $appsByOs[$osInstanceName] = $appNames; 

} 
+0

好的,謝謝,但是最後是什麼? – arrowill12

+0

這是一個被刪除的錯字 – Anigel

+0

幾乎不是Anigel,當第二個應用程序被添加到數組時會發生什麼?目前,您將使用此代碼覆蓋以前的應用程序。 –

0

恢復過去後,並增加有一個以上的應用程序對於OS實例

$appsByOs = Array(); 
foreach($osInstanceNames as $osInstanceName){ 
        $appsByOs[$osInstanceName][] = $appNames; 

} 
+0

這不會回答這個問題。這會導致osName1 => Array(0 => array(app1),1 => array(app2))的輸出。問題顯示$ appNames已經是一個數組,並且還依賴於在$ osInstanceNames中多次列出的每個os – Anigel