Сравнение строк PHP – int

Кто-нибудь знает, почему в php

var_dump( "cat" == 0 ); 

Вычисляет истину? Также я понимаю:

 var_dump( "cat" === 0 ); 

имеет намеченный результат, но любопытно, почему первый случай будет правдой. Также это php 5.3.

В руководстве PHP есть таблица сравнения типов, которая дает вам представление о том, что происходит при сравнении переменных двух разных типов данных.

Ваш первый пример («свободное» сравнение, поскольку он также не проверяет типы данных двух операндов) неявно преобразует строку слева в целое число. Так как он не начинается с числа, строка преобразуется в целое число 0, которое равно целому числу 0.

Второй пример сравнивает не только значения, но и типы. Так как тип отличается, сравнение ложно.

Строка неявно преобразуется в целое число. См. Документацию :

Если строка начинается с действительных числовых данных, это будет используемое значение. В противном случае значение будет равно 0 (ноль).

Поскольку вы неявно бросаете строку в целое число, и поскольку строка не содержит чисел, она отливается от 0

«cat» жонглирует до 0 как целое число, поэтому верно

но если вы набрали

 var_dump( "01" == 0 ); 

это было бы неверно, потому что 1 не равно 0