为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
UYOU 2022-10-14 10:42:14
我有一个二维数组,其中填充了 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>';?>和预期的结果它 类似于这个任何建议将不胜感激!谢谢!
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

你快到了。您必须计算 2 个日期之间的差异并在您的内部循环下方相应地分配颜色。条件如下:


$diff = $month[2] - $month[1];

$total += $diff;



if($diff < -2.0){

    echo '<td style="color:green">' . $diff . '</td>';

}else if($diff > 2.0){

    echo '<td style="color:red">' . $diff . '</td>';

}else{

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

}

完整代码:


<?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)

  );


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) {

    echo '<tr>';


    foreach ($month as $avg) {

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

    }


    $diff = $month[2] - $month[1];

    $total += $diff;



    if($diff < -2.0){

        echo '<td style="color:green">' . $diff . '</td>';

    }else if($diff > 2.0){

        echo '<td style="color:red">' . $diff . '</td>';

    }else{

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

    }


    echo '</tr>';

}


echo "<tr><td colspan='4'>Total difference : $total</td></tr>";

echo '</table>';


查看完整回答
反对 回复 2022-10-14
?
GCT1015

TA贡献1827条经验 获得超4个赞

用于array_walk将临时差异添加到每个子数组:


array_walk($months, function(&$month){

    $month[3] = $month[2] - $month[1]; 

});

然后 $month[3] 将是你的区别。为了便于阅读,我将删除内部循环并每月显式回显该行:


foreach ($months as $month) {

    echo '<tr>';

    echo '<td>' . $month[0] . '</td>';

    echo '<td>' . $month[1] . '</td>';

    echo '<td>' . $month[2] . '</td>';

    echo '<td';


    if ($month[3] > 2) {

        echo ' style="color: red;"';

    }

    elseif ($month[3] < -2) {

        echo ' style="color: green;"';

    }


    echo '>' . $month[3] . '</td>';

    echo '</tr>';

}


查看完整回答
反对 回复 2022-10-14
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号