2013-01-16 141 views
-1

在PHP中使用foreach循環,我想ID添加到下面的對象...PHP - 更新多維數組

$ array_before

Array 
(
    [1111] => Array 
     (
      [Name] => Name A 
      [Subcats] => Array 
       (
        [11111] => Array 
         (
          [Name] => Name A.1 
         ) 
        [11112] => Array 
         (
          [Name] => Name A.2 
         ) 
       ) 
     ) 
    [2222] => Array 
     (
      [Name] => Name B 
      [Subcats] => Array 
       (
        [22221] => Array 
         (
          [Name] => Name B.1 
         ) 
        [22222] => Array 
         (
          [Name] => Name B.2 
         ) 
       ) 
     ) 
) 

...所以它看起來類似於如下:

$ array_after

Array 
(
    [1111] => Array 
     (
      [Id] => 1 
      [Name] => Name A 
      [Subcats] => Array 
       (
        [11111] => Array 
         (
          [Id] => 1 
          [Name] => Name A.1 
         ) 
        [11112] => Array 
         (
          [Id] => 2      
          [Name] => Name A.2 
         ) 
        [11113] => Array 
         (
          [Id] => 3      
          [Name] => Name A.2 
         )      
       ) 
     ) 
    [2222] => Array 
     (
        [Id] => 2 
        [Name] => Name B 
      [Subcats] => Array 
       (
        [22221] => Array 
         (
          [Id] => 1      
          [Name] => Name B.1 
         ) 
        [22222] => Array 
         (
          [Id] => 2      
          [Name] => Name B.2 
         ) 
       ) 
     ) 
) 

有人能指出我在正確的方向?

感謝, LG

+0

這只是一個示例,或者是無限數量的(可能的)深度級別? – BenM

+0

期望能夠處理n個深度級別 –

回答

6

試試這個:

$id = 0; 
array_walk($array,function(&$a) use (&$id) {$a['id'] = ++$id;}); 

這將修改originl數組中添加的ID,而不是創建一個新的。

+2

+,注意這需要PHP> = 5.3。 –

+0

按預期工作,謝謝 - 我只需在每個深度級別上調用它​​。 再一次,謝謝。 –

+0

如果您有多個深度級別,請嘗試['array_walk_recursive'](http://php.net/array-walk-recursive) - 您只需在函數中添加更多內容以確保您處於正確的位置水平。 –