Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有多个条件(` | ``以及`&;`)的if语句的php语法_Php_If Statement_Syntax_Operators_Multiple Conditions - Fatal编程技术网

带有多个条件(` | ``以及`&;`)的if语句的php语法

带有多个条件(` | ``以及`&;`)的if语句的php语法,php,if-statement,syntax,operators,multiple-conditions,Php,If Statement,Syntax,Operators,Multiple Conditions,上下文:在我们的网站上,我们使用if语句计算一个项目/订单是否符合免费送货的标准,该语句评估值“ff”是否为真。根据满足的条件,它会适当设置装运。我们现在需要评估一个项目是否与订单x一起免费装运。为了达到最佳效果,对于其他目的,如外部馈送,必须应用另一个条件(重量必须=0或无值),以便fw为免费运费。下面是代码,我不明白它为什么不起作用: if($r['freeFreight'] == 'ff' || ($r['freeFreight'] == 'fw' && ($r['weig

上下文:在我们的网站上,我们使用if语句计算一个项目/订单是否符合免费送货的标准,该语句评估值“ff”是否为真。根据满足的条件,它会适当设置装运。我们现在需要评估一个项目是否与订单x一起免费装运。为了达到最佳效果,对于其他目的,如外部馈送,必须应用另一个条件(重量必须=0或无值),以便fw为免费运费。下面是代码,我不明白它为什么不起作用:

if($r['freeFreight'] == 'ff' || ($r['freeFreight'] == 'fw' && ($r['weight'] == 0 || $r['weight'] == '') ) ) {
    $r['shippingStandard'] = 0;
}
if语句中的条件是否与()集合过度隔离?或者,它们只是放错了位置。例如,应该是:

if(($r['freeFreight'] == 'ff') || ($r['freeFreight'] == 'fw' && $r['weight'] == 0 || $r['weight'] == '') ) {
    $r['shippingStandard'] = 0;                     
}
对我来说,第二个更符合逻辑,因为:如果($r['freegreement']=='ff')-那么不管以下条件如何,语句都应该返回true并将变量设置为0。我的逻辑正确吗?很抱歉这个新问题

谢谢你能提供的任何帮助


因此,我认为,根据目前的答案(感谢所有参与帮助业余爱好者的人),我想我将尝试:

if( ($r['freeFreight'] == 'ff') || ( $r['freeFreight'] == 'fw' ) && empty( $r['weight'] ) ) { 
    $r['shippingStandard'] = 0;
}
计划用这个进行试验,如果根本错误,请建议。

试试这个

if( $r['freeFreight'] == 'ff' || ( $r[ 'freeFreight' ] == 'fw' && empty( $r['weight'] ) ) ) {
    $r['shippingStandard'] = 0;
}
使用
empty
也可能更干净一些

如果你真的想更进一步,你可以这样做

if( $r[ 'freeFreight' ] == 'ff' ) {
    $r[ 'shippingStandard' ] = 0;
} elseif( $r[ 'freeFreight' ] == 'fw' && empty( $r[ 'weight' ] ) ) {
    $r[ 'shippingStandard' ] = 0;
} else {
    // Everything else
}
如果要缩短变量,并在以后使用它们:

$freight  = $r[ 'freeFreight' ];
$weight   = isset( $r[ 'weight' ] ) ? $r[ 'weight' ] : null;
$shipping = $r[ 'shippingStandard' ]; // Or whatever you want the default value to be...
if( $freight == 'ff' || ( $freight == 'fw' && empty( $weight ) ) ) {
    $shipping = 0;
}

// ... Later down the file
$r = array( 
    'freeFreight' => $freight,
    'weight' => $weight, 
    'shippingStandard' => $shipping
);
我真的不知道文件的其余部分是什么样子的,比如如果这是一个获取shipping的函数,那么您只需返回
$shipping
。希望这有帮助。您应该能够移动这些概念以获得您想要的内容

试试这个

if( $r['freeFreight'] == 'ff' || ( $r[ 'freeFreight' ] == 'fw' && empty( $r['weight'] ) ) ) {
    $r['shippingStandard'] = 0;
}
使用
empty
也可能更干净一些

如果你真的想更进一步,你可以这样做

if( $r[ 'freeFreight' ] == 'ff' ) {
    $r[ 'shippingStandard' ] = 0;
} elseif( $r[ 'freeFreight' ] == 'fw' && empty( $r[ 'weight' ] ) ) {
    $r[ 'shippingStandard' ] = 0;
} else {
    // Everything else
}
如果要缩短变量,并在以后使用它们:

$freight  = $r[ 'freeFreight' ];
$weight   = isset( $r[ 'weight' ] ) ? $r[ 'weight' ] : null;
$shipping = $r[ 'shippingStandard' ]; // Or whatever you want the default value to be...
if( $freight == 'ff' || ( $freight == 'fw' && empty( $weight ) ) ) {
    $shipping = 0;
}

// ... Later down the file
$r = array( 
    'freeFreight' => $freight,
    'weight' => $weight, 
    'shippingStandard' => $shipping
);

我真的不知道文件的其余部分是什么样子的,比如如果这是一个获取shipping的函数,那么您只需返回
$shipping
。希望这有帮助。您应该能够移动这些概念以获得您想要的内容

您的第一个选项应该与以下内容相同:

if ($r['freeFreight'] == 'ff') {
    $r['shippingStandard'] = 0;
}
elseif ($r['freeFreight'] == 'fw') {
    // the dual check for an empty value here is kind of redundant and unneccessary.
    // I'd probably just use "if ($r['weight'])" and be done with it
    if ($r['weight'] == 0) {
        $r['shippingStandard'] = 0;
    }
    elseif ($r['weight'] == '') {
        $r['shippingStandard'] = 0;
    }
    else {
        // $r['shippingStandard'] stays whatever it was before
    }
}
else {
    // $r['shippingStandard'] stays whatever it was before
}

如果这个逻辑对你来说是正确的,那么你应该是正确的,我会
print\r($r)
,以确保它持有你所期望的东西。在第一个示例中,您的括号正是我要做的。

您的第一个选项应该与以下内容相同:

if ($r['freeFreight'] == 'ff') {
    $r['shippingStandard'] = 0;
}
elseif ($r['freeFreight'] == 'fw') {
    // the dual check for an empty value here is kind of redundant and unneccessary.
    // I'd probably just use "if ($r['weight'])" and be done with it
    if ($r['weight'] == 0) {
        $r['shippingStandard'] = 0;
    }
    elseif ($r['weight'] == '') {
        $r['shippingStandard'] = 0;
    }
    else {
        // $r['shippingStandard'] stays whatever it was before
    }
}
else {
    // $r['shippingStandard'] stays whatever it was before
}


如果这个逻辑对你来说是正确的,那么你应该是正确的,我会
print\r($r)
,以确保它持有你所期望的东西。第一个例子中的括号正是我要做的。

您是否正在检查
isset($r['weight'])
?我没有。。smh-如果($r['freegreement']='ff')| | |(isset($r['weight']&&r['freegreement']='fw'&&&r['weight']==0 |$$r['weight']=''){$r['shippingStandard']=0;},情况也会如此
emtpy
将比执行所有这些检查更干净,如果您能提供帮助,就永远不要依赖一种语言的运算符优先级规则,尤其是在您使用多种语言的情况下。这可能有点繁琐,但始终使用适当的括号来强制执行“您的”规则,而不是希望语言解析能为你做得很好。@MarcB,好提示。JamesLee:我会同意Ascheer的答案。你在检查
isset($r['weight'])
?我不是..smh-那会比如果($r['freegrage']='ff')|(isset($r['weight']&$r['freegrage']='fw'&$r['weight']='fw'&$r['weight']=0)好吗==''){$r['shippingStandard']=0;}
emtpy
将比执行所有这些检查更干净,如果您能提供帮助,就永远不要依赖一种语言的运算符优先级规则,尤其是在您使用多种语言的情况下。这可能有点繁琐,但始终使用适当的括号来强制执行“您的”规则,而不是希望语言解析能为您正确地完成它。@MarcB,好提示。JamesLee:我同意Ascherer的答案。问题是,如果$r['freegarity']='ff'我们不在乎$r['weight']=null、、0或9081239082。这是否应该用if-else语句来完成?我想这是我要给空的一个镜头,但括号中没有第一个条件。这可能正是我们要找的。是的,我修复了它,所以这是您想要的。您可以通过分配
$r['freegrage']来进一步清理它
$freight
,因此它更适合于行,idk,如果您稍后将在功能化的另一个编辑中使用该变量,@JamesLee,如果您想在本节中对其进行细分way@JamesLee尝试留下评论而不是编辑答案,这些评论将被视为无效而拒绝,尝试评论或回答“问题是,如果$r['freegarity']='ff'我们不在乎$r['weight']=null、、0或9081239082。这是否应该用if-else语句来完成?我想这是我要给空的一个镜头,但括号中没有第一个条件。这可能正是我们要找的。是的,我修复了它,所以这是您想要的。您可以通过分配
$r['freegrage']来进一步清理它
$freight
,因此它更适合于行,idk,如果您稍后将在功能化的另一个编辑中使用该变量,@JamesLee,如果您想在本节中对其进行细分way@JamesLee请尝试留下评论而不是编辑答案,这些评论将被视为无效而拒绝,如果($r['weight']),请尝试发表评论或回复“
是一个非常懒散的检查,没有留下太多的话来说明你在检查什么。请使用类似
empty
的东西来确切说明你在寻找什么。仅仅因为PHP允许你用代码吊死自己,并不意味着你应该这样做。
if(empty($r['weight'))