我在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
或其他方式,当我尝试一些测试用例时。
嗯..我在这里做错了什么?
答案 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)
以下是在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 - 而不是简单地根据每次有效性检查分配其值。