У меня есть оператор 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