Почему мой оператор If принимает неверное условие String в PHP?

Я очень смущен, потому что PHP принимает следующее условие.

<?php
$b = true;
if($b == 'anything')
echo 'ok';
else
echo 'no';
?>

Ну, PHP отображает ok, Я до сих пор не понимаю, как это возможно.

Может быть, вы можете уточнить это для меня.

2

Решение

это должно работать для вас

$b = true;
if($b === 'hello')
echo 'ok';
else
echo 'no';

когда используешь == php только проверяет, равны ли значения, без сравнения типов значений, когда первое значение является bool, php преобразует обе стороны в bool, преобразуя любую строку, кроме пустой '' и строка '0' вернусь trueвот почему вы должны использовать ===

следить за этим ссылка на сайт понять сравнение в php

5

Другие решения

Php не является строго типизированным языком, поэтому значение во второй половине оператора IF считается значением Truthy. Если вы хотите жаловаться и на типы, используйте сравнение «===». Взгляните на правдивую таблицу на этой странице. http://php.net/manual/en/types.comparisons.php

1

Согласно инструкции PHP по операторам сравнения (http://php.net/manual/en/language.operators.comparison.php) == проверяет «равенство», тогда как === проверяет личность (что практически означает, что он того же ТИПА и того же ЗНАЧЕНИЯ).

При сравнении (для равенства) bool и string, string приведен к bool, Согласно документы:

При преобразовании в логическое значение следующие значения считаются ЛОЖНЫМИ:
* само логическое ЛОЖЬ
* целое число 0 (ноль)
* Поплавок 0,0 (ноль)
* пустая строка, а строка "0" * массив с нулевыми элементами

так что ваша строка 'anything' становится true,

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector