我想构建一个if then
语句,其中包含/排除最终标准的条件。
示例:
$vanilla_on=true;
$sugar_on=false;
$flour_on=true;
$vanilla=10;
$sugar=2;
$flour=100;
// As I set $vanilla_on to false, it doesn't appear in my if statement, if it was set to true, it would be added && ($vanilla < 100)
if ( ($sugar>2) && ($flour>90) )
{
// ok
}
基本上,如果相应的布尔值设置为true,我只想检查香草,糖和面粉条件。因此,如果我有vanilla_on = false,那么包含多少香草单元就不算什么,因为我们只会检查糖和面粉的状况。
答案 0 :(得分:1)
$vanilla_ok = true;
if ($vanilla_on === true && $vanilla < 5) {
$vanilla_ok = false;
}
if (... && $vanilla_ok)
{
// ok
}
答案 1 :(得分:1)
// these are "switches" that will tell the if statement which components to check
$vanilla_on=true;
$sugar_on=false;
$flour_on=true;
// components
$vanilla=10;
$sugar=2;
$flour=100;
// only check that the component meets the thresholds *if* it's "on"
if ( ($sugar>2 || !$sugar_on) && ($flour>90 || !$flour_on) && ($vanilla < 100 || !$vanilla_on) )
{
// ok
echo "OKAY!";
}
这种方式的工作原理是:你有一个if语句必须求值为TRUE才能“好”。假设您需要检查所有三个组件以确保它们都在阈值范围内,所有3个条件必须为true才能使整个语句评估为true。如果AND中只有一个条件为假,则整个过程都是错误的。
但是,假设您不关心使用多少香草。只要在阈值范围内测量糖和面粉,你使用多少香草就无法确定是否合适。为此,您将每个单独的组件包装在括号中,并将其与相应的“on”布尔值进行OR运算。
简而言之,如果$ vanilla_on为false,意味着你不关心你使用多少香草,你可以使用与布尔值相反的布尔值,true和OR值。由于(true或false)始终求值为true,因此无论您使用多少香草,if语句的该部分始终返回true。同样,如果$ sugar_on为真,则相反的值为false,因此为了使if语句的该部分为真,我们现在仅依靠糖阈值落入通过小于比较确定的范围内。
简而言之,将问题分解为单个组件,然后将它们全部组合在一起。
答案 2 :(得分:0)
好的,我找到了一种简单的方法。
if (a)
{
if (b) {c=true} else {c=false}
}
else
{
c=true
}
repeat for all _on variables
if (c) && (d) ...