繁体   English   中英

为什么即使我检查等于 PHP 条件也为真

[英]Why PHP condition getting true even if i am checking equal to

<?php
    $test = "-3,-13";
    if ($test == -3) {
        echo "yay";
    } else {
        echo "nay";
    }

?>

为什么它总是通过 if 条件而不是 else 条件? 我是 php 新手,所以不知道这里发生了什么。

字符串被转换为整数"-3, 46, blala" -> -3 ,然后评估条件。

使用===运算符来避免转换。

大多数时候,您不想让 php 在您的位置进行转换(安全问题)。 相反,请求被拒绝。

正如 PHP 文档所说

Example     Name    Result
$a == $b    Equal   TRUE if $a is equal to $b after type juggling.
$a === $b   Identical   TRUE if $a is equal to $b, and they are of the same type.

当我们将一个数字与一个字符串进行比较时,该字符串被转换为一个数字,并以数字方式进行比较。

var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true

https://www.php.net/manual/en/language.operators.comparison.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM