【问题标题】:Is it possible the sort this output by the "count($getaffreferrals)"?是否可以通过“count($getaffreferrals)”对该输出进行排序?
【发布时间】:2018-06-02 06:08:56
【问题描述】:

是否可以通过“count($getaffreferrals)”对 $closerstring 输出进行排序?

我附上了一张照片,以显示它当前在我的网站上输出的内容。 Screenshot of the output

function affiliate_leaderboard_function() {
global $wpdb;

$getallreferrals = $wpdb->get_results( "SELECT * FROM `wp_affiliate_wp_referrals`");
$getallaffiliates = $wpdb->get_results( "SELECT * FROM `wp_affiliate_wp_affiliates`");
$current_month = date("m");
$current_year = date("Y");
$current_date = date("Y-m-d");
$lastday = date('t',strtotime($current_date));

function styleleaderboard() {
    ?>
        <style>
            span.numberofsales {
                            font-size:18px !important;
                color : #666 !important;
            }
                        .closerstring {
                            text-transform: capitalize;
            }
        </style>
    <?php
}
add_action('wp_head', 'styleleaderboard');
styleleaderboard();

foreach ($getallaffiliates as $theaffiliate) {
    $user_id = get_userdata( $theaffiliate->user_id );
    $userfirstname = $user_id->first_name;
    $userlastname = $user_id->last_name;
    $totalreferrals = $theaffiliate->referrals;
    $affiliate_id = $theaffiliate->affiliate_id;
    $getaffreferrals = $wpdb->get_results( "SELECT `date` FROM `wp_affiliate_wp_referrals` WHERE `affiliate_id` = $affiliate_id AND `date` >= '$current_year-$current_month-01:00:00:00' AND `date` < '$current_year-$current_month-$lastday:23:59:59'");//Get all referrals by affiliate id
    $closerstring = "<li class='closerstring'>".$userfirstname." ".$userlastname."<br><span class='numberofsales'>Sales: ".count($getaffreferrals)."</p></li>";
    if(!empty($getaffreferrals) && $affiliate_id!='1'){
        $return_array.= $closerstring;
}
}
return $return_array;
}
add_shortcode('affiliate_leaderboard' , 'affiliate_leaderboard_function');

【问题讨论】:

    标签: php html mysql wordpress affiliate


    【解决方案1】:

    如果你把数据放在一个多维数组中,一个字段是字符串,另一个字段是你想要排序的字段,那么你可以使用 PHP 的 array_multisort 对那个键进行排序。我还没有测试过这段代码,但它应该是这样的:

    function affiliate_leaderboard_function() {
        global $wpdb;
    
        $getallreferrals = $wpdb->get_results( "SELECT * FROM `wp_affiliate_wp_referrals`");
        $getallaffiliates = $wpdb->get_results( "SELECT * FROM `wp_affiliate_wp_affiliates`");
        $current_month = date("m");
        $current_year = date("Y");
        $current_date = date("Y-m-d");
        $lastday = date('t',strtotime($current_date));
    
        function styleleaderboard() {
            ?>
                <style>
                    span.numberofsales {
                                    font-size:18px !important;
                        color : #666 !important;
                    }
                                .closerstring {
                                    text-transform: capitalize;
                    }
                </style>
            <?php
        }
        add_action('wp_head', 'styleleaderboard');
        styleleaderboard();
    
        $my_array = array();
        foreach ($getallaffiliates as $theaffiliate) {
            $user_id = get_userdata( $theaffiliate->user_id );
            $userfirstname = $user_id->first_name;
            $userlastname = $user_id->last_name;
            $totalreferrals = $theaffiliate->referrals;
            $affiliate_id = $theaffiliate->affiliate_id;
            $getaffreferrals = $wpdb->get_results( "SELECT `date` FROM `wp_affiliate_wp_referrals` WHERE `affiliate_id` = $affiliate_id AND `date` >= '$current_year-$current_month-01:00:00:00' AND `date` < '$current_year-$current_month-$lastday:23:59:59'");//Get all referrals by affiliate id
            $getaffreferrals_count = count($getaffreferrals);
            $closerstring = "<li class='closerstring'>".$userfirstname." ".$userlastname."<br><span class='numberofsales'>Sales: ".$getaffreferrals_count."</p></li>";
            if(!empty($getaffreferrals) && $affiliate_id!='1'){
                $my_array[] = array('affreferrals' => $getaffreferrals_count, 'closerstring' => $closerstring);
                //$return_array.= $closerstring;
            }
        }
    
        // Obtain a list of columns
        $referrals = array();
        $closerstr = array();
        foreach ($my_array as $key => $row) {
            $referrals[$key] = $row['affreferrals'];
            $closerstr[$key] = $row['closerstring'];
        }
    
        // Sort the data with affreferrals descending, closerstring ascending
        // Add $my_array as the last parameter, to sort by the common key
        array_multisort($referrals, SORT_DESC, $closerstr, SORT_ASC, $my_array);
    
        $return_array = '';
        foreach ($my_array as $row) {
            $return_array .= $row['closerstring'];
        }
    
        return $return_array;
    }
    add_shortcode('affiliate_leaderboard' , 'affiliate_leaderboard_function');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 2012-04-18
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      相关资源
      最近更新 更多