PHP在FOREACH循环完成后对mysql数据进行排序

PHP在FOREACH循环完成后对mysql数据进行排序,php,wordpress,join,mysqli,Php,Wordpress,Join,Mysqli,我在这里寻找答案,但没有找到。我创建了一种在漂亮的表中显示数据库数据的方法。现在当我意识到我需要一种在执行查询后对数据进行排序的方法时 首先,我运行主sql查询以获取基本数据: $sql = "SELECT {$wpdb->users}.ID, firstname.meta_value as first_name, lastname.meta_value as last_name, webaria_company.meta_value as webaria_company

我在这里寻找答案,但没有找到。我创建了一种在漂亮的表中显示数据库数据的方法。现在当我意识到我需要一种在执行查询后对数据进行排序的方法时

首先,我运行主sql查询以获取基本数据:

$sql = "SELECT {$wpdb->users}.ID, firstname.meta_value as first_name, 
lastname.meta_value as last_name, webaria_company.meta_value as webaria_company
       FROM {$wpdb->users}
       INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} 
       WHERE meta_key = 'first_name') as firstname ON {$wpdb->users}.ID = firstname.user_id
       INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = 'last_name') as lastname ON {$wpdb->users}.ID = lastname.user_id
       INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} 
       WHERE meta_key = 'webaria_company') as webaria_company ON {$wpdb->users}.ID = webaria_company.user_id";
$asuserlist = $wpdb->get_results($sql);
然后,对于每个用户ID,我运行一个查询以动态获取每个用户的结果

 <table width="100%">
                    <thead>
                    <tr>
                    <th align="center">Full Name</th>
                    <th align="center">Company</th>
                    <th align="center">Attainment Score</th>
                    </tr>
                    </thead>

            <?php 
            if (empty($asuserlist)) { 
            echo "No Users' Data Available Yet!";
            } 
            else { 
                foreach($asuserlist as $key=>$value){                       
                    $result = $wpdb->get_results( "SELECT `score_as` FROM `wattp2_as_score` WHERE `user_id`='".$asuserlist[$key]->ID."' AND `approved`=1 AND `date` > '".$sqldateoneyear."' ORDER BY `date` DESC LIMIT 4" );
                    // count results in the array of AS SCORE
                    $countresults = count($result);
                    // add all results of AS SCORE
                    $sum = 0;
                    foreach($result as $key2=>$value){
                    if(isset($value->score_as))
                    $sum += $value->score_as;
                    }
                    // get the average AS SCORE
                    $as_score1 = ($sum) / ($countresults);
                    // round AS SCORE
                    $as_score_round = round($as_score1);
                    if ($countresults == 0) {
                    $as_score_hund = "No Data"; } else {
                    $as_score_hund = $as_score_round . " over " . $countresults; }; ?>

                    <tbody><tr><td><?php echo $asuserlist[$key]->first_name . " " . $asuserlist[$key]->last_name; ?></td><td><?php echo $asuserlist[$key]->webaria_company; ?></td><td><?php echo $as_score_hund; ?></td></tr></tbody>
                    <?php } }?>
                    </table>

全名
单位
成就分数

创建一个MySQL函数来获取查询中的数据,并按返回值进行排序。如果您真的想把它做好,您将知道如何将其全部编写为一个MySQL查询,以便在那里进行排序。这应该是可能的——一个子查询和一些奇特的计算。但可能不容易。您需要首先根据计算结果创建一个值数组。然后用一些函数对数组排序,并使用另一个foreach循环来显示行谢谢:)我会给它一个bash,谷歌将是我的向导哈哈