2012-05-03 60 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