我正在努力扩展我的PHP技能,我正在尝试编写一个简单的程序来计算音量和检查以确保所有数值都是0-20,但由于某种原因,我无法得到我的程序识别错误的数字。
<?php
//read deep end
$deepEnd = $_POST['deepEnd'];
//read shallow end
$shallowEnd = $_POST['shallowEnd'];
//read length
$length = $_POST['length'];
//read width
$width = $_POST['width'];
$flag = false;
$min = 0;
$max = 20;
if($deepEnd < $min && $deepEnd > $max){
$flag = true;
}
if($shallowEnd < $min && $shallowEnd > $max){
$flag = true;
}
if($length < $min && $length > $max){
$flag = true;
}
if($width < $min && $width > $max){
$flag = true;
}
$volume = 0.5*($deepEnd+$shallowEnd)*$length*$width*7.5;
echo "<h2>Volume Calculator</h2>";
if($flag == 'true'){
echo "<p>Incorrect value input. Please enter 0-20.</p>\n";
} else {
echo "<p>Your volume is: ".$volume." gallons.</p>\n";
}
?>
我的输入来自我的HTML程序。 <input type='number'>
所以我很困惑为什么我的if语句没有正确解释它。
答案 0 :(得分:1)
如果小于$min
且大于$max
,则对每个变量进行比较。除非$min
大于$max
,否则您的代码将无效。
示例:
$min = 0;
$max = 10;
$x = 5;
if ($x < $min && $x > $max) { // this will always evaluate as false
// won't execute here
}
要解决您的问题,即检查该值是否超出$min
或$max
的范围,您应该使用||
运算符。
示例:
$min = 0;
$max = 10;
$x = -5;
if ($x < $min || $x > $max) { // true
// do something
}
答案 1 :(得分:0)
在我看来,你的逻辑是错误的,在第一次检查中: -
if($deepEnd < $min && $deepEnd > $max){
$flag = true;
}
如果$ deepend小于min并且大于可能永远不会真正发生的最大值,则只会返回错误,测试代码: -
if($deepEnd < $min OR $deepEnd > $max){
$flag = true;
}
为我工作