将二维php数组元素相减并输出到同一张表

我有一个二维数组,其中填充了 2 个不同年份的 12 个月名称和平均温度。截至目前,我让他们在使用 foreach 循环时打印到一个 html 表中。但是,我还需要找到一种方法来计算差异并将其打印到其余数据旁边的同一张表中,以及完全打印总差异。如果差异高于 2,我还需要将差异打印为红色文本,如果差异低于 -2,则打印为绿色。否则颜色不会改变。因为这几乎是我第一次在一定程度上使用 php,所以我完全不知道如何实现它。


到目前为止,这是我的代码,它成功打印到 html 表中:


<?php

        $months = array

          (

          array("Jan",33.6,32.6),

          array("Feb",35.6,42.9),

          array("Mar",43.1,40.3),

          array("Apr",53.2,51.4),

          array("May",62.7,68.1),

          array("Jun",76.3,72.5),

          array("Jul",76.3,77.1),

          array("Aug",74.6,78.6),

          array("Sep",68,73.2),

          array("Oct",57,60.1),

          array("Nov",46.7,45.3),

          array("Dec",37.7,41.0)

          );

          

        //print array into an html table

        

        echo '<table>';

        echo '<tr><th>Month</th><th>1950 - 2018</th><th>2018</th><th>Difference</th></tr>';

        foreach ($months as $month) {

            

            echo '<tr>';

            

            foreach ($month as $avg) {

                    echo '<td>' . $avg . '</td>';

            }

            echo '</tr>';

        }

        echo '</table>';

?>

和预期的结果它 类似于这个


任何建议将不胜感激!谢谢!


UYOU
浏览 143回答 2
2回答

一只名叫tom的猫

你快到了。您必须计算 2 个日期之间的差异并在您的内部循环下方相应地分配颜色。条件如下:$diff = $month[2] - $month[1];$total += $diff;if($diff < -2.0){&nbsp; &nbsp; echo '<td style="color:green">' . $diff . '</td>';}else if($diff > 2.0){&nbsp; &nbsp; echo '<td style="color:red">' . $diff . '</td>';}else{&nbsp; &nbsp; echo '<td>' . $diff . '</td>';}完整代码:<?php$months = array&nbsp; (&nbsp; array("Jan",33.6,32.6),&nbsp; array("Feb",35.6,42.9),&nbsp; array("Mar",43.1,40.3),&nbsp; array("Apr",53.2,51.4),&nbsp; array("May",62.7,68.1),&nbsp; array("Jun",76.3,72.5),&nbsp; array("Jul",76.3,77.1),&nbsp; array("Aug",74.6,78.6),&nbsp; array("Sep",68,73.2),&nbsp; array("Oct",57,60.1),&nbsp; array("Nov",46.7,45.3),&nbsp; array("Dec",37.7,41.0)&nbsp; );echo '<table border = "1">';echo '<tr><th>Month</th><th>1950 - 2018</th><th>2018</th><th>Difference</th></tr>';$total = 0;foreach ($months as $month) {&nbsp; &nbsp; echo '<tr>';&nbsp; &nbsp; foreach ($month as $avg) {&nbsp; &nbsp; &nbsp; &nbsp; echo '<td>' . $avg . '</td>';&nbsp; &nbsp; }&nbsp; &nbsp; $diff = $month[2] - $month[1];&nbsp; &nbsp; $total += $diff;&nbsp; &nbsp; if($diff < -2.0){&nbsp; &nbsp; &nbsp; &nbsp; echo '<td style="color:green">' . $diff . '</td>';&nbsp; &nbsp; }else if($diff > 2.0){&nbsp; &nbsp; &nbsp; &nbsp; echo '<td style="color:red">' . $diff . '</td>';&nbsp; &nbsp; }else{&nbsp; &nbsp; &nbsp; &nbsp; echo '<td>' . $diff . '</td>';&nbsp; &nbsp; }&nbsp; &nbsp; echo '</tr>';}echo "<tr><td colspan='4'>Total difference : $total</td></tr>";echo '</table>';

GCT1015

用于array_walk将临时差异添加到每个子数组:array_walk($months, function(&$month){&nbsp; &nbsp; $month[3] = $month[2] - $month[1];&nbsp;});然后 $month[3] 将是你的区别。为了便于阅读,我将删除内部循环并每月显式回显该行:foreach ($months as $month) {&nbsp; &nbsp; echo '<tr>';&nbsp; &nbsp; echo '<td>' . $month[0] . '</td>';&nbsp; &nbsp; echo '<td>' . $month[1] . '</td>';&nbsp; &nbsp; echo '<td>' . $month[2] . '</td>';&nbsp; &nbsp; echo '<td';&nbsp; &nbsp; if ($month[3] > 2) {&nbsp; &nbsp; &nbsp; &nbsp; echo ' style="color: red;"';&nbsp; &nbsp; }&nbsp; &nbsp; elseif ($month[3] < -2) {&nbsp; &nbsp; &nbsp; &nbsp; echo ' style="color: green;"';&nbsp; &nbsp; }&nbsp; &nbsp; echo '>' . $month[3] . '</td>';&nbsp; &nbsp; echo '</tr>';}
打开App,查看更多内容
随时随地看视频慕课网APP