首页 > 解决方案 > 两个if条件和爆炸

问题描述

我有这个工作功能:

function pingAddress($ip) {
    $lines = file('F:\share\result.txt');
    foreach($lines as $line){
        $parts = explode(' ', $line);
        if($parts[0] == $ip){
            return $parts[1];
        }
    }
}

echo pingAddress('192.168.50.105'); // UP

它从如下所示的文件中返回 UP 或 DOWN:

192.168.50.104 UP
192.168.50.105 UP
192.168.50.106 DOWN
192.168.50.107 UP

我无法添加背景颜色以使用 UP 或 DOWN 显示。就像是:

function pingAddress($ip) {
    $lines = file('F:\share\result.txt');
    foreach($lines as $line){
        $parts = explode(' ', $line);
        if($parts[0] == $ip && $parts[1] == 'UP'){
            echo "<p style='background-color:lime'>";
            return $parts[1];
        }else{
            echo "<p style='background-color:red'>";
            return $parts[1];
        }
    }
}

谢谢!

标签: php

解决方案


这是因为file()默认情况下将新行保留在字符串的末尾,因此当您尝试将其与 - 进行比较时UP- 它不会UP与新行匹配。

要么使用

$lines = file('F:\share\result.txt', FILE_IGNORE_NEW_LINES);

删除新行或修剪输出

if($parts[0] == $ip && trim($parts[1]) == 'UP'){

这也取决于您是否要在文件中为同一个 IP 地址拥有多个条目,有些可能是向上的,有些可能是向下的。如果可能发生,您将需要解决此问题。

您还需要将颜色格式添加到输出数据的位置,这仅当前返回数据。


推荐阅读