PHP 5 函数 - 我可以这样做吗?

标签 php function

有一个关于 PHP 函数的奇怪问题(也许?)- 我有一个“网络应用程序”,可以提取气候数据并将“条件格式”应用于不同的温度变量。 $高、$低、$xTmp 和 $xDew。我目前有 4 个繁琐的 case 循环,我真的很想将代码合并到一个 case 循环中,这就是我想知道函数是否有用的地方。不过,我遇到了一些挑战,因为我似乎无法使用该功能。

代码如下:

function ColorTemp($PassThisTemp) 
{

global $ThisColor; global $ThisTemp;
$ThisTemp = $PassThisTemp; $ThisColor = ''; switch (true) {
case ($ThisTemp <= -20): $ThisColor = 'C6TB20'; break;
case ($ThisTemp <= -15) and ($ThisTemp >= -19): $ThisColor = 'C6TB15B19'; break;
case ($ThisTemp <= -10) and ($ThisTemp >= -14): $ThisColo = 'C6TB10B14'; break;
case ($ThisTemp <= -5) and ($ThisTemp >= -9): $ThisColor = 'C6TB05B09'; break;
case ($ThisTemp <= 0) and ($ThisTemp >= -4): $ThisColor= 'C6T000B04'; break;
case ($ThisTemp <= 4) and ($ThisTemp >= 1): $ThisColor = 'C6T004001'; break;
case ($ThisTemp <= 9) and ($ThisTemp >= 5): $ThisColor = 'C6T009005'; break;
case ($ThisTemp <= 14) and ($ThisTemp >= 10): $ThisColor = 'C6T014010'; break;
case ($ThisTemp <= 19) and ($ThisTemp >= 15): $ThisColor = 'C6T019015'; break;
case ($ThisTemp <= 24) and ($ThisTemp >= 20): $ThisColor = 'C6T024020'; break;
case ($ThisTemp <= 29) and ($ThisTemp >= 25): $ThisColor = 'C6T029025'; break;
case ($ThisTemp <= 32) and ($ThisTemp >= 30): $ThisColor = 'C6T032030'; break;
case ($ThisTemp <= 34) and ($ThisTemp >= 33): $ThisColor = 'C6T034033'; break;
case ($ThisTemp <= 39) and ($ThisTemp >= 35): $ThisColor = 'C6T039035'; break;
case ($ThisTemp <= 44) and ($ThisTemp >= 40): $ThisColor = 'C6T044040'; break;
case ($ThisTemp <= 49) and ($ThisTemp >= 45): $ThisColor = 'C6T049045'; break;
case ($ThisTemp <= 54) and ($ThisTemp >= 50): $ThisColor = 'C6T054050'; break;
case ($ThisTemp <= 59) and ($ThisTemp >= 55): $ThisColor = 'C6T059055'; break;
case ($ThisTemp <= 64) and ($ThisTemp >= 60): $ThisColor = 'C6T064060'; break;
case ($ThisTemp <= 69) and ($ThisTemp >= 65): $ThisColor = 'C6T069065'; break;
case ($ThisTemp <= 74) and ($ThisTemp >= 70): $ThisColor = 'C6T074070'; break;
case ($ThisTemp <= 79) and ($ThisTemp >= 75): $ThisColor = 'C6T079075'; break;
case ($ThisTemp <= 84) and ($ThisTemp >= 80): $ThisColor = 'C6T084080'; break;
case ($ThisTemp <= 89) and ($ThisTemp >= 85): $ThisColor = 'C6T089085'; break;
case ($ThisTemp <= 94) and ($ThisTemp >= 90): $ThisColor = 'C6T094090'; break;
case ($ThisTemp <= 99) and ($ThisTemp >= 95): $ThisColor = 'C6T099095'; break;
case ($ThisTemp <= 104) and ($ThisTemp >= 100): $ThisColor = 'C6T104100'; break;
case ($ThisTemp <= 109) and ($ThisTemp >= 105): $ThisColor = 'C6T109105'; break;
case ($ThisTemp <= 114) and ($ThisTemp >= 110): $ThisColor = 'C6T114110'; break;
case ($ThisTemp >= 115): $ThisColor = 'C6T115'; break; }

}

我正在尝试将 2 个变量(基于 SQL 结果)传递到此循环中,并根据 $ThisColor 为 2 个不同的行涂上颜色

ColorTemp($row_OJCObsDate['dewpoint_f']);
ColorTemp($row_OJCObsDate['temp_f']);

echo "<tr>";
echo "<td>" . $row_OJCObsDate['ObsID'] . "</td>";
echo "<td>" . $row_OJCObsDate['station_id'] . "</td>";
echo "<td>" . $row_OJCObsDate['observation_time'] . "</td>";
echo "<td>" . $row_OJCObsDate['weather'] . "</td>";
echo "<td class='" . ColorTemp($ThisColor) . "'>" . ColorTemp($ThisTemp) . "</td>";
echo "<td class='" . ColorTemp($ThisColor) . "'>" . ColorTemp($ThisTemp) . "</td>";
echo "<td>" . $row_OJCObsDate['relative_humidity'] . "</td>";
echo "<td>" . $row_OJCObsDate['wind_dir'] . "</td>";
echo "<td>" . $row_OJCObsDate['wind_mph'] . "</td>";
echo "<td>" . $row_OJCObsDate['wind_gust_mph'] . "</td>";
echo "<td>" . $row_OJCObsDate['pressure_mb'] . "</td>";
echo "<td>" . $row_OJCObsDate['visibility_mi'] . "</td>";   
echo "</tr>";
}

相反,我得到的是空白结果。

代码在函数中运行良好,但同样,我想删除额外的 100 行代码。

最佳答案

我改变了一些东西,下面的 3v4l 对我来说工作正常 http://3v4l.org/B4E1l

<?php
/**
 * @var int $ThisTemp A temperature
 */
function ColorTemp($ThisTemp) 
{
    $ThisColor = ''; 
    switch (true) {
        case ($ThisTemp <= -20): $ThisColor = 'C6TB20'; break;
        case ($ThisTemp <= -15) and ($ThisTemp >= -19): $ThisColor = 'C6TB15B19'; break;
        ...
        case ($ThisTemp <= 114) and ($ThisTemp >= 110): $ThisColor = 'C6T114110'; break;
        case ($ThisTemp >= 115): $ThisColor = 'C6T115'; break; 
    }

    return $ThisColor;
}

echo ColorTemp(12);

我也注意到了一些奇怪的事情

echo "<td class='" . ColorTemp($ThisColor) . "'>" . ColorTemp($ThisTemp) . "</td>";
echo "<td class='" . ColorTemp($ThisColor) . "'>" . ColorTemp($ThisTemp) . "</td>";

ColorTemp() 采用单个整数参数,从您的代码看来您正在传递一种颜色?

关于PHP 5 函数 - 我可以这样做吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27459603/

相关文章:

php - 抑制 PDO 警告

javascript - 如何将 jQuery/Javascript 函数转换为方法

javascript - setTimeout 无法访问变量

PHP注册表不保存

将定义从 C 转换为 Delphi

c++ - 函数指针 - 类的内部和外部

r - 标准化应用于数据框的数据的函数出错

javascript - Flot 问题中的时间图?

php - 如何在 php 中创建语言

php - 更改 PHP 行的第一个和最后一个值