Как работает присвоение переменной со сменой типа

Кто объяснит почему так тот молодец) Вопрос не в том, почему 0 при (int), а почему 0 == a34 введите сюда описание изображения


Ответы (1 шт):

Автор решения: Алексей Шиманский

При таком (не строгом) сравнении $a приводится к сравниваемому типу - к числу. 'a34' в виде числа - это ноль (точнее в "0"). A "0" == 0 -> true (При "0" === 0 -> false)

Про преобразование типов написано в документации (https://www.php.net/manual/ru/language.types.type-juggling.php)

Примером автоматического преобразования типа является оператор умножения '*'. Если какой-либо из операндов является float, то все операнды интерпретируются как float, и результатом также будет float. В противном случае операнды будут интерпретироваться как int и результат также будет int.

<?php
    $foo = "1";  // $foo - это строка (ASCII-код 49)
    $foo *= 2;   // $foo теперь целое число (2)
    $foo = $foo * 1.3;  // $foo теперь число с плавающей точкой (2.6)
    $foo = 5 * "10 Little Piggies"; // $foo - это целое число (50)
    $foo = 5 * "10 Small Pigs";     // $foo - это целое число (50)
?>

Это же правило действует и при сравнении.

→ Ссылка