PHP 运算符失败
PHP Operator failing
我正在使用此代码 select 并比较来自 2 个单独的 MySQLi 表的日期和信息。如果输入的折扣代码与数据库中的折扣代码相同,或者数据库中的折扣代码设置为 "open"
,代码应生成 "discount_amount"
。然而,即使日期设置和代码设置为 "open"
,如果我手动输入 "open"
到 "$design_discount_code"
,我只会得到 discount_amount
。
if($discount_code == $design_discount_code or $discount_code == 'open' && $date >= $discount_start_date && $date <= $discount_end_date){
$design_price_total = $discount_amount;
$discount = 'yes';
} else {
$design_price_total = $original_price;
$discount = 'no';
}
我也曾尝试将 PHP 运算符更改为 ||
和 xor
,但没有更好的结果。关于为什么在我键入 "open"
时它只返回 'yes' 而不是自动返回的任何想法?
检查 and
和 or
的优先级,也许你可以使用括号 ()
来指定首先评估哪个。
if( ( $discount_code == $design_discount_code || $discount_code == 'open') && ( $date >= $discount_start_date && $date <= $discount_end_date) )
您似乎假设 or
的优先级高于 and
。这是不正确的。您应该使用括号来指示 or
检查是 and
条件之一。像这样:
if(($discount_code == $design_discount_code or $discount_code == 'open') and $date >= $discount_start_date and $date <= $discount_end_date)
另请注意,将英文 and/or 与符号 &&/|| 混合使用这不是一个好主意。
我正在使用此代码 select 并比较来自 2 个单独的 MySQLi 表的日期和信息。如果输入的折扣代码与数据库中的折扣代码相同,或者数据库中的折扣代码设置为 "open"
,代码应生成 "discount_amount"
。然而,即使日期设置和代码设置为 "open"
,如果我手动输入 "open"
到 "$design_discount_code"
,我只会得到 discount_amount
。
if($discount_code == $design_discount_code or $discount_code == 'open' && $date >= $discount_start_date && $date <= $discount_end_date){
$design_price_total = $discount_amount;
$discount = 'yes';
} else {
$design_price_total = $original_price;
$discount = 'no';
}
我也曾尝试将 PHP 运算符更改为 ||
和 xor
,但没有更好的结果。关于为什么在我键入 "open"
时它只返回 'yes' 而不是自动返回的任何想法?
检查 and
和 or
的优先级,也许你可以使用括号 ()
来指定首先评估哪个。
if( ( $discount_code == $design_discount_code || $discount_code == 'open') && ( $date >= $discount_start_date && $date <= $discount_end_date) )
您似乎假设 or
的优先级高于 and
。这是不正确的。您应该使用括号来指示 or
检查是 and
条件之一。像这样:
if(($discount_code == $design_discount_code or $discount_code == 'open') and $date >= $discount_start_date and $date <= $discount_end_date)
另请注意,将英文 and/or 与符号 &&/|| 混合使用这不是一个好主意。