Проблема в том, что вы сравниваете строку и целое число, а PHP «помогает» приведение строки в целое число - целое число. 0!='ts'
оценивается как false
, потому что сравнение заканчивается после преобразования 0!=0
. Вы можете предотвратить это явно обрабатывать содержимое вашего массива в виде строки:
strval($resAlloc[$i][$j]) != 'ts'
Это будет делать сравнение '0'!='ts'
, который правильно оценивает в true
. Если вы передадите strval() строку, она вернет ее без изменений, поэтому это должно быть безопасно использовать независимо от того, что находится в вашем массиве.
В качестве альтернативы, как сказал Сами Диндан, вы можете просто использовать! ==, который не будет преобразовывать тип.
Как это объясняет проблему? '0! = 'Ts'' и' false! =' Ts'' должны оцениваться как 'true', и поэтому оператор if в целом должен быть истинным. – octern
Неправильно. 'false && false' равно' false'. –
Кому бы ни говорили: почему бы вам не объяснить почему? –