если (0 == '%') повторяют “WTF, Php, почему Вы не можете сравнить вещи нормально?”

Я просто уменьшил сумасшедшую ошибку до того, что находится в заголовке этого вопроса. Я уверен, что существует Совершенно Разумное Объяснение того, почему Php думает, что 0 == '%' (или любой другой специальный символ, я думаю). Я думал, что будет хорошо получить то объяснение на StackOverflow!

5
задан dreeves 24 February 2010 в 00:13
поделиться

4 ответа

Использование '===' (для точного, буквального сравнения - значения должны быть одного типа и равны) вместо '==' решает эту проблему. При использовании '==' он пытается привести '%' к числу, и 0 - это лучшее, что он может сделать.

6
ответ дан 18 December 2019 в 13:13
поделиться

Он сделает то же самое с любой строкой, преобразование нечисловой строки в целое число всегда дает 0.

7
ответ дан 18 December 2019 в 13:13
поделиться

поскольку '%' не является истинным, оно должно быть ложным (0), поэтому, конечно, 0=='%'

;-) забавно, хотя

0
ответ дан 18 December 2019 в 13:13
поделиться

В случае, если оператор строгого сравнения не подходит напрямую, если вы хотите, чтобы оба значения сравнивались как строки, вы можете использовать strcmp(). В качестве примера можно привести случай, когда оба значения являются переменными, а их типы могут быть либо string, либо int. Вместо приведения типа к строке и последующей строгой проверки равенства, функция strcmp() может быть менее многословной.

Приведение типов в php очень удобно. Но если вы не понимаете его многочисленные правила (некоторые из них могут быть кусачими), старайтесь избегать его использования. См. http://www.php.net/manual/en/types.comparisons.php

1
ответ дан 18 December 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: