-2
При разработке приложения PHP я столкнулся с этой странной причудой.Почему «01» == «1», «000333» == «333» и т. Д. Истинно?
По-видимому, строка '01' == '1'
, '05' == '5'
, '03111' == '3111'
. Я попытался это -
php > $numbers = ["1", "2", "3", "4", "5"];
php > in_array("01", $numbers);
true
php > var_dump("01" == "1");
true
php > var_dump("00003333" == "3333")
true
Как предотвратить это (т.е. вернуть ложь для in_array
вызова), и почему это происходит в первую очередь?
использование 3 знака равно '' === – 123
руководство PHP имеет некоторые рекомендации по переменным типам и их эффекту при сравнении. http://php.net/manual/en/language.operators.comparison.php –
FYI: 'in_array()' делает слабое сравнение по умолчанию, поэтому оно в основном такое же, как '==', и для этого также по той же причине, почему он работает одинаково. Это также решение для решения проблемы с '==' и 'in_array()', чтобы просто использовать идентичное сравнение. – Rizier123