Я хочу знать, почему следующее выражение оценивается как true.Почему следующее выражение оценивается как true?
var_dump(('a' == 0)); //bool(true)
Я хочу знать, почему следующее выражение оценивается как true.Почему следующее выражение оценивается как true?
var_dump(('a' == 0)); //bool(true)
String conversion to numbers (от PHP инструкции, курсив мой)
Когда строка оценивается в числовом контексте, полученное значение и тип определяются следующим образом.
Если строка не содержит какой-либо из символов «», „е“, или „E“ и числовое значение вписывается в пределах целого типа (как определено PHP_INT_MAX), строка будет оцениваться как целое число. Во всех других случаях он будет оцениваться как поплавок.
Значение задается начальной частью строки. Если строка начинается с действительных числовых данных, это будет используемое значение. В противном случае значение будет равно 0 (ноль). Допустимые числовые данные - это необязательный знак , за которым следует одна или несколько цифр (необязательно содержащая десятичную точку ), за которой следует необязательный показатель степени. Показателем является 'e' или 'E', за которым следует одна или несколько цифр.
Примеры:
var_dump(('a' == 0)); //bool(true)
var_dump(('a' === 0)); //bool(false)
var_dump(('aaaa' == 0)); //bool(true)
var_dump(('1aaaa' == 1)); //bool(true)
var_dump(('18aaaaa' == 18)); //bool(true)
Нет, я знаю разницу между «==» и «===». Спасибо, в любом случае! – Dumitru
Выполните 'эхо (INT) 'а'; ', и вы лучше поймете. – leninhasda
, когда строки сравниваются с целыми числами, они автоматически записываются как целые числа, и если они не содержат числа, результат этого каста равен 0. и '0 == 0' - поэтому вы никогда не сравниваете строку с integer - и если вам нужно, вы используете строгое сравнение: '' a '=== 0' является ложным. –