2014-05-08 124 views
1

一個dimensonal陣列和相關的按鍵我有一個遞歸函數抽不出來,看起來像這樣的多維數組在PHP

Array 
(
[17] => Array 
    (
     [cat_id] => 17 
     [cat_name] => test.example.1 
     [cat_parent] => 16 
     [cat_slug] => Test Example 1 
    ) 

[18] => Array 
    (
     [16] => Array 
      (
       [cat_id] => 16 
       [cat_name] => test.example.2 
       [cat_parent] => 15 
       [cat_slug] => Test Example 2 
      ) 

     [17] => Array 
      (
       [15] => Array 
        (
         [cat_id] => 15 
         [cat_name] => test.example.3 
         [cat_parent] => 6 
         [cat_slug] => Test Example 3 
        ) 

       [16] => Array 
        (
         [6] => Array 
          (
           [cat_id] => 6 
           [cat_name] => test.example.4 
           [cat_parent] => 2 
           [cat_slug] => Test Example 4 
          ) 

         [7] => Array 
          (
           [2] => Array 
            (
             [cat_id] => 2 
             [cat_name] => test.example.5 
             [cat_parent] => 0 
             [cat_slug] => Test Example 5 
            ) 

          ) 

        ) 

      ) 

    ) 

) 

數據我不能找到一種方法在一維,從而創建這個數組我希望有人能夠通過一些數組遊戲來幫助它成爲一個維度,並保留相關的密鑰。

示例。

Array 
(
    [17] => Array 
    (
    [cat_id] => 17 
    [cat_name] => test.example.1 
    [cat_parent] => 16 
    [cat_slug] => Test Example 1 
) 

    [16] => Array 
(
    [cat_id] => 16 
    [cat_name] => test.example.2 
    [cat_parent] => 15 
    [cat_slug] => Test Example 2 
) 


    [15] => Array 
    (
    [cat_id] => 15 
    [cat_name] => test.example.3 
    [cat_parent] => 6 
    [cat_slug] => Test Example 3 
    ) 


    [6] => Array 
    (
    [cat_id] => 6 
    [cat_name] => test.example.4 
    [cat_parent] => 2 
    [cat_slug] => Test Example 4 
    ) 


    [2] => Array 
    (
    [cat_id] => 2 
    [cat_name] => test.example.5 
    [cat_parent] => 0 
    [cat_slug] => Test Example 5 
    ) 

) 
+0

你循環,如果is_array(值)循環再 – Ibu

+0

它麻煩一點@Ibu因爲他追求的產品陣列也 – willoller

+1

你有你提的這個遞歸函數的代碼?因爲我看到它的方式,那就是問題所在。 – Ozmah

回答

3
function flatten($array, &$newArray) { 
    foreach($array as $i => $el) { 
     if (!is_array($array)) { 
      return; 
     } 
     if (isset($el['cat_id'])) { 
      $newArray[$i] = $el; 
     } else (is_array($el)) { 
      flatten($el, $newArray); 
     } 
    } 
} 
$result = array(); 
flatten($array, $result);