2017-08-04 38 views
0

我有一個由遞歸函數構建的數組樹。現在,我希望所有項目都包含通知/警告計數器。只是一個數字,顯示該項目有多少'通知'。如何在遞歸樹中從子項到父項的值?

現在來解決問題。我希望所有的項目都能顯示自己和它的孩子的通知總數。但遞歸功能正在從頂級父母開始並逐漸減弱。所以這是錯誤的方式來計算通知。

像這樣:

Item 1 (3) 
- - - Item 1.1 (1) 
- - - Item 1.2 (2) 
- - - - - - Item 1.2.1 (1) 
- - - - - - Item 1.2.2 (1) 
Item 2 (1) 
- - - Item 2.1 (0) 
- - - Item 2.2 (1) 

這裏是我的遞歸函數(簡體)

<?php 
public function tree($item_id) 
{ 
    global $wpdb; 

    $q = $wpdb->get_results("SELECT * FROM items WHERE parent_item_id = '".$item_id."'", "ARRAY_A"); 

     foreach ($q as $key => $r) 
     { 
      $return[$key]    = $r; 
      $return[$key]['notices'] = 1; 
      $return[$key]['children'] = $this->tree($r['item_id']); 
     } 

    return $return; 
} 
?> 

回答

0

爲什麼不先調用tree功能,再加入總和父母的notices字段?

$c_info = $this->tree($r['item_id']); 

$sum = 0; 
foreach ($c_info as $c_key => $c_data) 
{ 
    $sum += $c_data['notices']; 
} 

$return[$key]['children'] = $c_info; 
$return[$key]['notices'] = 1 + $sum; 
相關問題