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

时间:2011-04-20 17:09:20

标签: php string comparison operators

我有一个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]

以下是它试图比较的变量(直接从源复制)和它们下面的Hex代码:

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,对吗?我看不出为什么这些不起作用的原因,特别是当其他非常相似的变量通过罚款时(即Ambulance-1和Ambulance-3)。

这是另一个例子:

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

2 个答案:

答案 0 :(得分:3)

我会向甜甜圈打赌,你有空白问题。尝试使用两端的分隔符打印变量(管道总是好的),或使用var_dump()深入检查变量。

答案 1 :(得分:2)

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