为什么这些字符串不匹配!?!——PHP


Why don't these strings match!?! - PHP

我有一个if语句,有几个条件:

if (
    (fncIsSet($row[0]['incident']) == $line[4]
     && fncIsSet($row[0]['id']) == $line[0]
     && fncIsSet($row[0]["code"]) == $line[2]
    )
    && (
        ($GLOBALS['postCheckList'] == 2
         && $row[0]['QAResult']=='Fail'
        )
        || ($GLOBALS['postCheckList'] != 2)
    )
){

我有一个大的项目列表通过这段逻辑(5000多个值),大约99.9%的项目按预期通过。

我已经调试了十几次,所以我可以确认前两个条件通过了,但第三个条件失败了:

fncIsSet($row[0]["code"]) == $line[2]

下面是它试图比较的变量(直接从源代码复制)与它们下面的十六进制代码:

Ambulance-2
Ambulance-2
41 6D 62 75 6C 61 6E 63 65 2D 32 
41 6D 62 75 6C 61 6E 63 65 2D 32 

WTF ?我不明白为什么这些不工作,特别是当其他非常相似的变量通过良好(如救护车-1和救护车-3)。

下面是另一个例子:

Anzemet
Anzemet
41 6E 7A 65 6D 65 74 
41 6E 7A 65 6D 65 74 

我敢打赌你有尾随空格问题。试着打印出两端带有分隔符的变量(管道总是好的),或者使用var_dump()来深入检查变量。

使用var_dump()查看变量的确切内容(+类型),如果是字符串,还可以查看长度。