2012-06-06 110 views
0

我有這個問題,我試圖從一個數組添加到另一個嵌套在原始數組的名稱下的值。添加到嵌套數組

例如,此腳本返回一個數組:

<?php 
return array (
'HTTP' => array(

    'GET' => array(

     '/' => function() { 

     }, 

    ), 

    'POST' => array(

     '/' => function($username, $password) { 

     }, 

    ) 

), 

'HTTPS' => array(

    'GET' => array(

     '/account/(:num)' => function($number) { 

     } 

    ) 
) 

然後,我有一類的變種:

private $routes = array(
    'HTTP' => array(
     'GET' => array(), 
     'POST' => array() 
    ), 
    'HTTPS' => array(
     'GET' => array(), 
     'POST' => array() 
    ), 
    'FILTRERS' => 
     'BEFORE' => array(), 
     'AFTER' => array() 
); 

什麼我做的是使用glob閱讀所有的文件,但我無法解決的問題是如何從第一個scrsip中循環所有數組並將它們推送到var中。

VAR將是:

private $routes = array(
    'HTTP' => array(
     'GET' => array(
      'example' => array(
       '/' => function() { 

        }, 
      ) 
     ), 
     'POST' => array(
      'example' => array(
       '/account/(:num)' => function($number) { 

        }, 
      ) 
     ) 
    ), 
    'HTTPS' => array(
     'GET' => array(
      'example' => array(
       '/' => function() { 

        }, 
      ) 
     ), 
     'POST' => array() 
    ), 
    'FILTRERS' => 
     'BEFORE' => array(), 
     'AFTER' => array() 
); 

唯一爲什麼我能想到使用周圍四個嵌套foreach ES,或複製爲每個陣列設置

+0

使用遞歸函數 – brenjt

+0

我不知道如何使用遞歸函數,因爲我不知道如何推入嵌套數組。因爲array_push添加到主數組的末尾。 –

+0

''example''從哪裏來?並且「FILTRERS」應該是「FILTERS」(沒有額外的「R」)? –

回答

0

假設第一陣列的代碼被存儲在$input你可以使用這個。我根據您的預期輸出硬編碼'example'

foreach ($input as $protocol => $methods) { 
    foreach ($methods as $method => $routeArray) { 
     $routes[$protocol][$method]['example'] = $routeArray; 
    } 
} 
+0

非常感謝:P –