Почему ( intval($x) == $x ), если $x = “5d”?

78
12 июля 2021, 06:20

Есть такой код на PHP

$x = "5d"; // 5d
$y = intval($x); // 5
if ( $y == $x ) // если 5 == 5d
    print_r( " $x это число " ); // 5d это число 

Кто-нибудь может мне объяснить почему 5d равно 5?

Answer 1

PHP слаботипизированный язык, в которым при произведении различных операций с переменными, те неявно приводятся к подходящему типу данных. В Вашем случае при попытке сравнить число и строку, вторая будет преобразована к числу, т.е. аналогично будет сделано intval($x). Чтобы сравнить число и строку, используйте оператор сравнения по значению и типу, т.е. $y === $x

Answer 2

Если операнды имеют разные типы данных, а в твоём случае это так. Так как $х строкового типа, а $y целочисленного, то Php приводит их к одному типу и выдаёт, что они тождественны . Держи ссылку где можешь почитать подробно про этот оператор https://puzzleweb.ru/php/14_compare.php#a1

READ ALSO
Не работает авторизация Вконтакте PHP API

Не работает авторизация Вконтакте PHP API

Пытаюсь сделать авторизацию на PHP через api вконтактеВот код:

114
Как отсортировать товар по категориям

Как отсортировать товар по категориям

Как отсортировать товар по категориям, чтобы товар выводился по очереди по 1 товару из категории, например, у нас есть

128
Spring Boot игнорирует CSS / JS при загрузке страницы

Spring Boot игнорирует CSS / JS при загрузке страницы

Моя страница (ordermustache) использует несколько стилей CSS (внешних и локальных), изображения, фоновое видео и JS-элемент

118