如果输入代码等于代码,则设置图标


if input code is equal to code, set icon

所以,我正在使用php和一些天气api制作一个天气应用程序。我使用的API会给我代码告诉我天气是什么样的。例如,如果代码是200,这意味着当前的天气是"雷雨带小雨"。我想做的是为每个代码显示一个图标。

icon-lightning-4 { 200, 201, 202, 210, 211, 212, 221, 230, 231, 231 }
icon-rainy-2 { 300, 301, 302, 310, 311, 312, 313, 314, 321, 520, 521, 522, 531 }
icon-rainy { 500, 501, 502, 503, 504 }
icon-snowy-3 { 511, 600, 601, 602, 611, 612, 615, 616, 620, 621, 622 }
icon-air { 701, 711, 721, 731, 741, 751, 761, 761, 771, 781 }
icon-sun { 800 }
icon-moon { 800 }
icon-cloudy { 801 }
icon-cloud-3 { 801 }
icon-cloud-4 { 802 }
icon-cloudy-2 { 803, 804 }

上面你可以看到图标名称和代码在大括号内。如何实现这一点,用PHP显示图标,而不是代码。我不是PHP开发人员,但我正在学习,这就是我问这个问题的原因。非常感谢你的帮助。左边的图标名实际上是显示图标的span类。

我会将代码放入数组中,并使用foreach结构遍历它们:

<?php
$iconMap = array(
    'icon-lightning-4' => array(200, 201, 202, 210, 211, 212, 221, 230, 231, 231),
    'icon-rainy-2' => array(300, 301, 302, 310, 311, 312, 313, 314, 321, 520, 521, 522, 531),
    'icon-rainy' => array(500, 501, 502, 503, 504),
    'icon-snowy-3' => array(511, 600, 601, 602, 611, 612, 615, 616, 620, 621, 622),
    'icon-air' => array(701, 711, 721, 731, 741, 751, 761, 761, 771, 781),
    'icon-sun' => array(800),
    'icon-moon' => array(800),
    'icon-cloudy' => array(801),
    'icon-cloud-3' => array(801),
    'icon-cloud-4' => array(802),
    'icon-cloudy-2' => array(803, 804)
);
$icon = '';
foreach ($iconMap as $iconString => $codes) {
    if (in_array($result, $codes, true)) {
        $icon = $iconString;
        break; // stop looping, for efficiency
    }
}

我在这里调用了API $result的结果。

这段代码在做什么:

  1. 用每个图标名称对应的代码创建关联数组
  2. 循环遍历这个数组
  3. 对于每个图标名,使用in_array
  4. 检查$result是否在代码数组中
  5. 如果是,则设置$icon为图标名称并停止循环。

如果没有找到代码,$icon将只是一个空字符串。

您可以使用字符串$icon来输出图像,例如:

if (!empty($icon)) {
    echo "<img src='{$icon}.png' alt='...'>";
}

很难给你正确的代码,因为那里没有那么多,…但这是我要做的:

PHP:

// for the lightning icon...
if ($code == 200||201||202||210||211||212||221||230||231||231){
$image_URL = "icon_lightning.png";
}
HTML:

<img src='<?php echo $image_URL ?>' width='50px' height='50px'></img>