if语句总是为false,即使值比较必须产生真实结果

时间:2015-10-07 03:40:54

标签: php

您好我正在测试我的程序,从txt文件中读取字符串行。

我要将结果传输到一个数组,但在测试if语句将最后一个数组转换为字符串时,通过if和switch语句,它总是返回false / else / default结果。

我的代码是:

<?php
    $test = file('test.txt');
    foreach ($test as $row)
    {
        $temp = explode(' ', $row);
        echo "$row<br>";
        $id = (int)$temp[0];
        $date = substr($temp[1], 0, 2) . "-" . substr($temp[1], 2, 2) . "-" . substr($temp[1], 4, 4);
        $time = substr($temp[2], 0,2) .":". substr($temp[2], 2,2) .":00";
        $twt = (string)substr($row, 18);
        echo substr($row, 18);
        switch ($twt) {
            case 'I':
                echo "wew";
                break;

            default:
                echo "wow";
                break;
        }
        echo  "id: $id date: $date time: $time status: <br>";
    }
?>

这个输出是:

005 09012015 0811 I 
I wew id: 5 date: 09-01-2015 time: 08:11:00 status: 
005 09012015 1813 O 
O wew id: 5 date: 09-01-2015 time: 18:13:00 status: 
005 09022015 0756 I 
I wew id: 5 date: 09-02-2015 time: 07:56:00 status: 
005 09022015 1951 O 
O wew id: 5 date: 09-02-2015 time: 19:51:00 status: 

感谢您的帮助。我有点困惑。我知道$ temp [3]数组包含&#39; I&#39;值。但它仍然在另一个输出上。

2 个答案:

答案 0 :(得分:1)

默认情况下,

file()会保留换行符/换行符。因此,代替I,即chr(73),你有三个字符可能是chr(73)chr(13)chr(10)或chr(73)chr(10)chr(13)。
但是有一个标志,您可以将其作为第二个参数传递以删除这些字符(并且还忽略其他空行)。

$test = file('test.txt',  FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES );

答案 1 :(得分:0)

可能包含空格或换行符。试试这个

$string = trim(preg_replace('/\s\s+/', ' ', $twt));

或者

$string = str_replace(' ', '', $twt);