Почему эти строки не совпадают?- PHP - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть оператор 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% проходят через, как и ожидалось.

Я прошел через отладчик десятки раз, чтобы я мог подтвердить, что первые 2 условия проходят, но третье не выполняется:

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 

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

Ставлю доллары на пончики, у вас есть проблемы с пробелами. Попробуйте распечатать переменные с разделителями на обоих концах (каналы всегда хороши) или используйте var_dump() для глубокой проверки ваших переменных.

2 голосов
/ 20 апреля 2011

используйте var_dump(), чтобы увидеть точное содержание ваших переменных (+ тип), а в случае строки также длину.

...