PHP排序数组输出



UPDATE 2(玩家盘口指数计算(

    $sql3 = "SELECT roundID FROM rounds WHERE userID='$userID'";
    $result3 = mysql_query($sql3) or die(mysql_error());
    $total_rounds = mysql_num_rows($result3);

    //CALCULATE USER HANDICAP INDEX IF TOTAL_ROUNDS > 4
    if($total_rounds > 4){              
        if($total_rounds<7) { $score_count = 1; }
        elseif($total_rounds<9) { $score_count = 2; }
        elseif($total_rounds<11) { $score_count = 3; }
        elseif($total_rounds<13) { $score_count = 4; }
        elseif($total_rounds<15) { $score_count = 5; }
        elseif($total_rounds<17) { $score_count = 6; }
        elseif($total_rounds<18) { $score_count = 7; }
        elseif($total_rounds<19) { $score_count = 8; }
        elseif($total_rounds<20) { $score_count = 9; }
        else { $score_count = 10; }
        $sql2 = "SELECT differential FROM rounds WHERE userID='$userID' ORDER BY date DESC LIMIT 20";
        $result2 = mysql_query($sql2) or die(mysql_error());
        $diff_results = array();
        while($row = mysql_fetch_assoc($result2)){
            $diff_results[] = $row['differential'];
        }
        sort($diff_results);
        $diff_results = array_slice($diff_results, 0, $score_count);
        $handicapIndex = array_sum($diff_results) / $score_count * 0.96;
        $handicapIndex = (floor($handicapIndex * 10)) / 10;

希望这能让你们了解我如何计算球员障碍指数。现在,我想向玩家(用户(显示用于计算其指数的轮次(排序日期(。

永远感激!

UPDATE(圆桌结构(

    roundID - auto incrementing primary key
    userID - INT
    courseID - INT
    tee - VARCHAR
    differential - FLOAT
    date - DATE

我甚至很难开始使用我正在尝试实现的这个功能。任何帮助都将不胜感激。

我有一组mysqldb结果,我想按字段差分排序。我这样把它们从数据库中拉出来:

    $sql4 = "SELECT * FROM rounds WHERE userID='$userID' ORDER BY date DESC LIMIT 20";
    $result4 = mysql_query($sql4) or die(mysql_error());
    $total_rounds = mysql_num_rows($result4);

正如你在上面看到的那样,我计算了返回的行数,以运行if-elsef语句,计算出我需要用不同的css突出显示多少分数:

    if($total_rounds<7) { $score_count = 1; }
    elseif($total_rounds<9) { $score_count = 2; }
    elseif($total_rounds<11) { $score_count = 3; }
    elseif($total_rounds<13) { $score_count = 4; }
    elseif($total_rounds<15) { $score_count = 5; }
    elseif($total_rounds<17) { $score_count = 6; }
    elseif($total_rounds<18) { $score_count = 7; }
    elseif($total_rounds<19) { $score_count = 8; }
    elseif($total_rounds<20) { $score_count = 9; }
    else { $score_count = 10; }

例如,如果$total_rounds=16,则我的$score_count将为6。现在,我需要获取这个由16行组成的数据集,并用php将其吐出,这样我就可以维护我的ORDERBY日期,同时将不同的css格式应用于上面if-elseif-else语句中的6。之所以计算$score_count,是因为我需要在维护日期顺序的同时,将16行数据集的6个最低分数高亮显示(也就是应用不同的css(。

所需的输出如下所示(*表示单独的css格式*(。

2013年8月1日-16日

2012年7月1日-1*

2013年6月1日-15日

2012年5月1日-2*

2013年4月1日-14

2012年3月1日-3*

2013年2月1日-13

2012年1月1日-4*

2012年12月31日-12

2012年12月30日-5*

12-29-2012-11

12-28-2012-6*

12-27-2012-10

12-26-2012-9

12-25-2012-8

12-24-2012-7

如果你有问题,请告诉我。

感谢

您必须遵循以下几个步骤

1( 根据得分(差分(对结果进行排序,得到得分最低的六条记录的id

$sql4 = "SELECT * FROM rounds WHERE userID='$userID' ORDER BY differential LIMIT 20";
$result4 = mysql_query($sql4) or die(mysql_error());
$total_rounds = mysql_num_rows($result4);
if($total_rounds<7) { $score_count = 1; }
elseif($total_rounds<9) { $score_count = 2; }
elseif($total_rounds<11) { $score_count = 3; }
elseif($total_rounds<13) { $score_count = 4; }
elseif($total_rounds<15) { $score_count = 5; }
elseif($total_rounds<17) { $score_count = 6; }
elseif($total_rounds<18) { $score_count = 7; }
elseif($total_rounds<19) { $score_count = 8; }
elseif($total_rounds<20) { $score_count = 9; }
else { $score_count = 10; }
$idsArray = array();
for($i=0; $i<$score_count; $i++){
    $dets = mysql_fetch_array($result4);
    $idsArray[] = $dets['roundID'];
}

2( 循环记录并匹配第一步创建的数组中的id。如果id匹配,则应用CSS,否则不应用。

$sql4 = "SELECT * FROM rounds WHERE userID='$userID' ORDER BY date DESC LIMIT 20";
$result4 = mysql_query($sql4) or die(mysql_error());
while($dets = mysql_fetch_array($result4)){
    if(in_array($dets['roundID'], $idsArray)){
        //apply CSS
        //display details here
    }
    else{
        //display details here
    }
}

注意:您现在应该停止使用mysql_*。专家强烈建议使用mysqli_*代替

我将以$total_rounds = 16$score_count would be 6为例。

$total_rounds = 16;
$score_count = 6 // comes from the if-else loop you already have
// now we loop over the result
// the css is applied to every odd result, until $score_count is not 0
$counter = 0;
while( ( $data = mysql_fetch_assoc( $result4 ) ) !== false ) {
    if( ( $counter % 2 ) && $score_count ) {
        echo $data['date']; // apply your css here
    } else {
        echo $data['date'];
    }
    $counter++;
    $score_count--;
}

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新