Heim  >  Artikel  >  Backend-Entwicklung  >  html - php如何在二维数组中,再计算单列的最值。

html - php如何在二维数组中,再计算单列的最值。

WBOY
WBOYOriginal
2016-06-06 20:24:431443Durchsuche

在做一个统计网页,现在遇到这样一个问题。
如标题:怎么在二维数组中,找到每个单列的最值。

如图,我需要找到需要的单列的最值,然后应用相应的样式。

现在的显示效果
html - php如何在二维数组中,再计算单列的最值。

需要实现的显示效果
html - php如何在二维数组中,再计算单列的最值。

相应的颜色css类我已经写好了,只需要引用就行了。
不用js代码,也就是说直接在生成的时候直接判断,再引用样式。

部分代码如下:

<code>    $index=1;
    while($row = mysql_fetch_array($result)){
        echo '<tr>';
        echo    '<td class="center essential">'.$index.'</td>';
        echo    '<td class="essential"><a class="user" href="search.php?qq='.%24row%5Bqq%5D.'&user='.%24row%5Buser%5D.'">'.$row[user].'</a></td>';
        echo    '<td class="essential">'.$row[speed].'</td>';
        echo    '<td class="essential">'.$row[keystroke].'</td>';
        echo    '<td class="essential">'.$row[length].'</td>';
        echo    '<td class="essential">'.$row[backspace].'</td>';
        echo    '<td>'.$row[wrong].'</td>';
        echo    '<td class="center">'.$row[ime].'</td>';
        echo    '<td class="center">'.$row[wordcount].'</td>';
        echo    '<td class="center">'.$row[timecost].'</td>';
        echo    '<td>'.$row[qq].'</td>';
        echo    '<td class="center">'.date("H:i",strtotime($row[timestart])).'</td>';
        echo    '<td class="center">'.$row[repeat].'</td>';
        echo    '<td>'.$row[score].'</td>';
        echo    '<td>'.$row[scoresum].'</td>';
        echo '</tr>';
        $index++;
      /************************************************
        其中的essential和center没什么其它作用,可以忽略。
       ************************************************/
    }</code>

切成数组什么的好说,我只是不知道存入数组后如何才能进行判断。
求大神说的细点,小白在此谢过。

回复内容:

在做一个统计网页,现在遇到这样一个问题。
如标题:怎么在二维数组中,找到每个单列的最值。

如图,我需要找到需要的单列的最值,然后应用相应的样式。

现在的显示效果
html - php如何在二维数组中,再计算单列的最值。

需要实现的显示效果
html - php如何在二维数组中,再计算单列的最值。

相应的颜色css类我已经写好了,只需要引用就行了。
不用js代码,也就是说直接在生成的时候直接判断,再引用样式。

部分代码如下:

<code>    $index=1;
    while($row = mysql_fetch_array($result)){
        echo '<tr>';
        echo    '<td class="center essential">'.$index.'</td>';
        echo    '<td class="essential"><a class="user" href="search.php?qq='.%24row%5Bqq%5D.'&user='.%24row%5Buser%5D.'">'.$row[user].'</a></td>';
        echo    '<td class="essential">'.$row[speed].'</td>';
        echo    '<td class="essential">'.$row[keystroke].'</td>';
        echo    '<td class="essential">'.$row[length].'</td>';
        echo    '<td class="essential">'.$row[backspace].'</td>';
        echo    '<td>'.$row[wrong].'</td>';
        echo    '<td class="center">'.$row[ime].'</td>';
        echo    '<td class="center">'.$row[wordcount].'</td>';
        echo    '<td class="center">'.$row[timecost].'</td>';
        echo    '<td>'.$row[qq].'</td>';
        echo    '<td class="center">'.date("H:i",strtotime($row[timestart])).'</td>';
        echo    '<td class="center">'.$row[repeat].'</td>';
        echo    '<td>'.$row[score].'</td>';
        echo    '<td>'.$row[scoresum].'</td>';
        echo '</tr>';
        $index++;
      /************************************************
        其中的essential和center没什么其它作用,可以忽略。
       ************************************************/
    }</code>

切成数组什么的好说,我只是不知道存入数组后如何才能进行判断。
求大神说的细点,小白在此谢过。

知道怎么弄了, 先从数据库把每列的数据先读取出来,然后用max(),min()计算每列的最值
然后,在输出的时候,当前列的数据是否等于这一列的最值,等于的话就给予特殊样式。
其中需要注意的一项是:mysql_fetch_array只能取一次数据,取完一次之后里面就没有数据了。所以先把查询到的数据转存。

部分代码如下:

<code>    //转存查询的结果
    $temp_result = array();
    while($row=mysql_fetch_array($result)){
        array_push($temp_result, $row);
    }
    //获取每个列的所有数据,算出最值;
    $speed = array();    $keystroke = array();    $length = array();    $backspace = array(); $repeat = array();
    foreach ($temp_result as $row ) {
        array_push($speed, $row[speed]);
        array_push($keystroke, $row[keystroke]);
        array_push($length, $row[length]);
        array_push($backspace, $row[backspace]);
        array_push($repeat, $row[repeat]);
    }
    $max_speed=max($speed);
    $max_keystroke=max($keystroke);
    $min_length = min($length);
    $min_backspace = min($backspace);
    $max_repeat = max($repeat);

    // 输出列表
    $index=1;
    foreach ($temp_result as $row ) {
        echo '<tr>';
        echo    '<td class="center essential">'.$index.'</td>';
        echo    '<td class="essential"><a class="user" href="search.php?qq='.%24row%5Bqq%5D.'&user='.%24row%5Buser%5D.'">'.$row[user].'</a></td>';
        if($row[speed]==$max_speed){
            echo    '<td class="essential bg-yellow">'.$row[speed].'</td>';
        }else{
            echo    '<td class="essential">'.$row[speed].'</td>';
        }
        if($row[keystroke]==$max_keystroke){
            echo    '<td class="essential bg-green">'.$row[keystroke].'</td>';
        }else{
            echo    '<td class="essential">'.$row[keystroke].'</td>';
        }
        if($row[length]==$min_length){
            echo    '<td class="essential bg-red">'.$row[length].'</td>';
        }else{
            echo    '<td class="essential">'.$row[length].'</td>';
        }
        if($row[backspace]==$min_backspace){
            echo    '<td class="essential bg-blue">'.$row[backspace].'</td>';
        }else{
            echo    '<td class="essential">'.$row[backspace].'</td>';
        }
        echo    '<td>'.$row[wrong].'</td>';
        echo    '<td class="center">'.$row[wordcount].'</td>';
        echo    '<td class="center">'.$row[timecost].'</td>';
        echo    '<td class="center">'.date("m-d H:i",strtotime($row[timestart])).'</td>';
        if($row[repeat]==$max_repeat){
            echo    '<td class="center bg-green">'.$row[repeat].'</td>';
        }else{
            echo    '<td class="center">'.$row[repeat].'</td>';
        }
        echo    '<td>'.$row[score].'</td>';
        echo    '<td>'.$row[scoresum].'</td>';
        echo '</tr>';
        $index++;
    }</code>

最终的显示效果
html - php如何在二维数组中,再计算单列的最值。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn