當$user_list
為0時,竟然會再次重新調用,$user_list
再次為0時,才會返回$result
function count_user_order($user_list_str, $limit = 4, $times = 1){ static $result = array('users_count'=>array(), 'order_number'=>array(), 'order_amount'=>array()); $sql = 'SELECT user_id FROM '.$GLOBALS['ecs']->table('users')." WHERE parent_id IN (%s)"; // 統計顧客 $user_list = $GLOBALS['db']->getCol(sprintf($sql, $user_list_str)); $sql_order = 'SELECT SUM(order_amount) order_amount,COUNT(*) order_number FROM ' .$GLOBALS['ecs']->table('order_info')." WHERE pay_status=2 AND user_id IN (%s)"; // 統計訂單數量及金額 list($result['order_amount'][], $result['order_number'][]) = $GLOBALS['db']->getRow(sprintf($sql_order, $user_list_str)); $result['users_count'][] = count($user_list); if ((!$limit || $times < $limit) && count($user_list)) { $user_list_str = implode(',', $user_list); count_user_order($user_list_str, $limit, ++$times); } return $result;}
或許圖片更容易看些:
回複內容:
當$user_list
為0時,竟然會再次重新調用,$user_list
再次為0時,才會返回$result
function count_user_order($user_list_str, $limit = 4, $times = 1){ static $result = array('users_count'=>array(), 'order_number'=>array(), 'order_amount'=>array()); $sql = 'SELECT user_id FROM '.$GLOBALS['ecs']->table('users')." WHERE parent_id IN (%s)"; // 統計顧客 $user_list = $GLOBALS['db']->getCol(sprintf($sql, $user_list_str)); $sql_order = 'SELECT SUM(order_amount) order_amount,COUNT(*) order_number FROM ' .$GLOBALS['ecs']->table('order_info')." WHERE pay_status=2 AND user_id IN (%s)"; // 統計訂單數量及金額 list($result['order_amount'][], $result['order_number'][]) = $GLOBALS['db']->getRow(sprintf($sql_order, $user_list_str)); $result['users_count'][] = count($user_list); if ((!$limit || $times < $limit) && count($user_list)) { $user_list_str = implode(',', $user_list); count_user_order($user_list_str, $limit, ++$times); } return $result;}
或許圖片更容易看些:
隨便掃了下,應該是沒有出口,就是沒有停止遞迴的條件
還有你應該把統計顧客和統計訂單數量及金額也寫成一個函數