【问题标题】:I'm getting what seems to be an infinite loop and can't figure out why - PHP/WordPress我得到了似乎是无限循环的东西,不知道为什么 - PHP/WordPress
【发布时间】:2019-02-14 11:24:02
【问题描述】:

我正在使用 foreach 循环遍历一些不同的用户 ID(其中大约 147 个,从具有许多重复项的表中检索),然后在检索时使用它们来检索更多用户详细信息。然后我将这些细节放在一个数组中,以便将它们推送到我的 JavaScript。

由于某种原因,我从数组中得到的结果似乎是一个无限循环,它在进程的某个地方退出了。

这是一个例子:

这是我目前正在运行的代码:

public function payments_rt_search() {
    global $wpdb;

    $date1 = $_POST['date1'];
    $date2 = $_POST['date2'];
    $threshold = intval($_POST['threshold']);

    $results = $wpdb->get_results( "SELECT DISTINCT vendor_id FROM {$wpdb->prefix}wcpv_commissions WHERE order_date BETWEEN '".$date1."'  AND '".$date2."'");

    $past_threshold_users = [];
    // echo json_encode($results);
    // wp_die();
    foreach ($results as $user_R) {
        $total_commissions = $wpdb->get_results( "SELECT SUM(product_commission_amount) AS TotalCommissions FROM {$wpdb->prefix}wcpv_commissions WHERE vendor_id = ".$user_R->vendor_id);
        $total_commission = 0;
        foreach($total_commissions as $total_commission_res)
        {
            $total_commission = $total_commission_res->TotalCommissions;
        }
        if ($total_commission >= $threshold)
        {
            $res2 = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wcpv_commissions WHERE vendor_id = ".$user_R->vendor_id." LIMIT 1");
            // echo json_encode($res2[0]);
            // wp_die();
            //Add user details to array
            $user_deets = $res2[0];
            $user_arr = array(
                'vendor_id' => $user_deets->vendor_id,
                'vendor_name' => $user_deets->vendor_name,
                'paypal_email' => '',
                'amount' => $total_commission,
                'currency' => '$',
                'commission_status' => $user_deets->commission_status
            );
            $past_threshold_users[] = $user_arr;
            // echo json_encode($user_arr);
            // wp_die();                
        }
        else
        {
            continue;
        }
        echo json_encode($past_threshold_users);
    }

    //echo json_encode($results);

    wp_die();
}

【问题讨论】:

    标签: php mysql wordpress foreach


    【解决方案1】:

    试试这个代码

    我在 foreach 循环之后移动了这个 echo json_encode($past_threshold_users); 代码。

        public function payments_rt_search() {
            global $wpdb;
    
            $date1 = $_POST['date1'];
            $date2 = $_POST['date2'];
            $threshold = intval($_POST['threshold']);
    
            $results = $wpdb->get_results( "SELECT DISTINCT vendor_id FROM {$wpdb->prefix}wcpv_commissions WHERE order_date BETWEEN '".$date1."'  AND '".$date2."'");
    
            $past_threshold_users = [];
            // echo json_encode($results);
            // wp_die();
            foreach ($results as $user_R) {
                $total_commissions = $wpdb->get_results( "SELECT SUM(product_commission_amount) AS TotalCommissions FROM {$wpdb->prefix}wcpv_commissions WHERE vendor_id = ".$user_R->vendor_id);
                $total_commission = 0;
                foreach($total_commissions as $total_commission_res)
                {
                    $total_commission = $total_commission_res->TotalCommissions;
                }
                if ($total_commission >= $threshold)
                {
                    $res2 = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wcpv_commissions WHERE vendor_id = ".$user_R->vendor_id." LIMIT 1");
                    // echo json_encode($res2[0]);
                    // wp_die();
                    //Add user details to array
                    $user_deets = $res2[0];
                    $user_arr = array(
                        'vendor_id' => $user_deets->vendor_id,
                        'vendor_name' => $user_deets->vendor_name,
                        'paypal_email' => '',
                        'amount' => $total_commission,
                        'currency' => '$',
                        'commission_status' => $user_deets->commission_status
                    );
                    $past_threshold_users[] = $user_arr;
                    // echo json_encode($user_arr);
                    // wp_die();                
                }
                /*else
                {
                    continue;
                }   */     
            }
    
            echo json_encode($past_threshold_users);
            //echo json_encode($results);
    
            wp_die();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 2015-12-21
      相关资源
      最近更新 更多