在if语句PHP中使用empty()和“ or”

时间:2019-08-29 17:42:33

标签: php if-statement

我正在尝试使用功能IFempty()来制作||语句。我不确定问题出在运算符和函数之间,但我在其他任何方面都没有线索。

IF中的每个检查都是单独进行的。

这是我想做的,但是我有一个错误:

if(empty($arrayA['somevalue']) || ($x->val1 == 0 && intval($x->valInteger) > 0)){
    $arrayA['somevalue'] = $y;
}

错误:

  

致命错误:未捕获错误:调用 [path] /ProductsImporter.php:648中未定义函数 [path] ()堆栈跟踪:#0

第648行是IF

我也尝试过使用is_numeric(),但这并没有改变。

我的快速修复程序运行正常,但是很丑陋,它是:

if(empty($arrayA['somevalue'])){
    $arrayA['somevalue'] = $y;
} else if ($x->val1 == 0 && intval($x->valInteger) > 0){
    $arrayA['somevalue'] = $y;
}

2 个答案:

答案 0 :(得分:3)

根据评论中的讨论,问题是一个微妙的问题:||运算符周围的空格原来是Unicode空格字符。因此,PHP将||运算符后的空白直接解释为函数的名称,从而导致错误。

用非Unicode空格替换有问题的空格可解决此问题。

答案 1 :(得分:0)

就像@ B.Fleming在评论中说的那样,问题出在||周围。由于某些原因,这些字符不是正常的空格,并且没有正确处理。

摆脱空格就完成了工作,所以这是新行(为了以防万一,我摆脱了每个空格):

if(empty($arrayA['somevalue'])||($x->val1==0&&intval($x->valInteger)>0)){
 $arrayA['somevalue'] = $y;
}

为了将来参考,我将Coda 2与PhpPlugin 4.2beta和Twig-HTML 0.2一起使用。我不确定是Coda,模块还是其他东西,但这就是我的信息。