2014-02-21 84 views
0

我試圖讓一個像前一陣列的事情一樣的數組父親的孩子,有些是重複的,有些不是。PHP從以前的陣列構建相關陣列

我有吐出像陣列這樣: [0] =>數組 ( [父] =>狗 [child_cat_1] =>一個類別 [child_cat_2] => 2類別 [標題] =>標題 [價格] => 9.49 [SKU] => 3558505550 [old_post_id] => 110 )

[1] => Array 
    (
     [parent] => cats 
     [child_cat_1] => category one 
     [child_cat_2] => category six 
     [title] => Title 
     [price] => 16.49 
     [sku] => 2251752419 
     [old_post_id] => 113 
    ) 

[2] => Array 
    (
     [parent] => cats 
     [child_cat_1] => category three 
     [child_cat_2] => category nine 
     [title] => Title 
     [price] => 59.99 
     [sku] => 7944100467 
     [old_post_id] => 114 
    ) 

[3] => Array 
    (
     [parent] => dogs 
     [child_cat_1] => category one 
     [child_cat_2] => category two 
     [title] => Title 
     [price] => 69.99 
     [sku] => 85932810243 
     [old_post_id] => 117 
    ) 

我有一個硬實時間創建基於關閉這些陣列一個新的數組,並把它變成一個par組ents和兒童。

我試過做什麼this post said,但我不能完成它的工作,因爲我不完全確定'父'會是什麼。

我試過這樣做,但我無法弄清楚如何考慮child_cat_2,並刪除重複項。我也讀過Stackoverflow上的每一個「數組構建層次結構」,但我無法弄清楚這一點。

foreach($new_array as $k => $v){ 
    $array[$v['parent']] = $v['child_cat_1']; 
} 

理想情況下,我想要完成parent下的每個child_cat_2child_cat_1,然後雙方正在安排,但隨後又刪除重複。我認爲父母只有11種,但兩個孩子每個都有100個。

有人可以指出我在正確的方向得到這些數組。

回答

0

你所描述的是一個3級嵌套數組。您發佈的代碼肯定無法實現。你的節點有四個屬性,而不是你的數組結構,所以這就是你應該在循環中構建的東西。然後根據其他三個屬性將它們放入您的結構中。

$results = array(); 
foreach ($data as $datum){ 
    $node = array(
    'title' => $datum['title'] 
    'price' => $datum['price'] 
    'sku' => $datum['sku'] 
    'old_post_id' => $datum['old_post_id'] 
); 

    if (!is_array($results[$datum['parent']])) { 
    $results[$datum['parent']] = array(); 
    } 
    if (!is_array($results[$datum['parent']][$datum['child_cat_1']])) { 
    $results[$datum['parent']] 
     [$datum['child_cat_1']] = array(); 
    } 
    if (!is_array($results[$datum['parent']][$datum['child_cat_1']][$datum['child_cat_2']])) { 
    $results[$datum['parent']] 
     [$datum['child_cat_1']] 
     [$datum['child_cat_2']] = array(); 
    } 

    $results[$datum['parent']] 
    [$datum['child_cat_1']] 
    [$datum['child_cat_2']][] = $node; 
} 
+0

$ data => $ datum?你能解釋,因爲我不明白如何讓我的數據進入這個foreach循環 – David

+0

這是一個錯字。這是一個標準的PHP foreach循環。隨意糾正這條線;它對問題的核心或我的解決方案沒有任何影響。 –