PHP中的布尔值问题

时间:2011-07-10 18:04:07

标签: php validation boolean

我在PHP中处理布尔值时遇到了一些问题。它是将数据存储到数据库之前的验证脚本。我写了一个全局验证器,它将验证并返回一个布尔值,验证是否成功。 这是我的代码。

    //VALIDATE 
    $isValid = true;
    foreach($team as $key=>$val) {
        if(!is_array($val)){
            $isValid = $isValid && validate($val, $key);
        }
    }
    for($it=0;$it<count($team['members']);$it++){
        foreach($team['members'][$it] as $key=>$val) {
            $isValid = $isValid && validate($val, $key);
        }
    }

    if(!$isValid) { // EDITED: if(!isValid)
        echo "validation error";
        exit(1);
    }

    //END OF VALIDATE

验证功能正常工作但有时我最终得到$isValid = true或其他方式,当我尝试一些测试用例时。 嗯..我在这里做错了什么?

5 个答案:

答案 0 :(得分:2)

如果这个表格有效,请检查:

if( false === $isValid) {

    echo "validation error";
    exit(1);

}

请注意,( ! $isValid )(false == $isValid )在某些情况下会返回结果,这些结果最初看起来是错误的。例如,请参阅strpos() documentation中的提示。

事实上,结果很好,因为操作行!==尝试以“有用”的方式投射操作数。

也就是说,使用===运算符总是更好,因为它会检查值和类型的操作数。请参阅operator overview

答案 1 :(得分:1)

如果没有常量if(!isValid) {,则

if (!"isValid")会回退到isValid。你可能意味着if (!$isValid) {

答案 2 :(得分:1)

   if(!isValid) {

isValid没有dolar,(你需要在PHP中给变量一些现金)所以:

       if(!$isValid) {

答案 3 :(得分:0)

来源:http://bit.ly/1hxDmVR

以下是在PHP中使用逻辑运算符的示例代码。希望它会有所帮助:

<html>

<head>
<title>Logical</title>
</head>
<body>
<?php
$a=10;
$b=20;
if($a>$b)
{
    echo " A is Greater";
}
elseif($a<$b)
{
    echo " A is lesser";
}
else
{
     echo "A and B are equal";
}
?>
<?php
    $c=30;
    $d=40;
   //if(($a<$c)AND($b<$d))
   if(($a<$c)&&($b<$d))
   {
       echo "A and B are larger";
   }
   if(isset($d))
       $d=100;
   echo $d;
   unset($d);
?>
<?php
    $var1=2;
    switch($var1)
    {
        case 1:echo "var1 is 1";
               break;
        case 2:echo "var1 is 2";
               break;
        case 3:echo "var1 is 3";
               break;
        default:echo "var1 is unknown";
    }
?>
</body>
</html>

答案 4 :(得分:-1)

我认为问题是你的$ isValid变量可以在循环中多次更改,并且在代码末尾只应用于最后一个循环中的最后一个值。

您最初应将其设置为true,然后仅在您的有效性检查失败时将其设置为false - 而不是简单地根据每次有效性检查分配其值。