Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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
PHP中的运算符优先级错误(和比较)_Php_Operator Precedence - Fatal编程技术网

PHP中的运算符优先级错误(和比较)

PHP中的运算符优先级错误(和比较),php,operator-precedence,Php,Operator Precedence,在我的代码中,我有这样的比较: $check_iter_C_sfavorito = ($tipo_iter_sfavorito[$id_loop][$k_tg] == 'C') AND (!(abs(@$delta_salto_check_sfavorito) < 0.001)); 及 (!(abs(@$delta\u salto\u check\u sfavorito)>>>为false 虽然如果我使用运算符“&&”而不是“AND”是可以的,但PHP运算符优先级意味着这不应该给出此错

在我的代码中,我有这样的比较:

$check_iter_C_sfavorito = ($tipo_iter_sfavorito[$id_loop][$k_tg] == 'C') AND (!(abs(@$delta_salto_check_sfavorito) < 0.001));

(!(abs(@$delta\u salto\u check\u sfavorito)<0.001))===>>>>为false
虽然如果我使用运算符“&&”而不是“AND”是可以的,但PHP运算符优先级意味着这不应该给出此错误,因为括号


感谢您对“Mar*B*”的快速回答。我将代码更改如下:

$check_iter_C_sfavorito = (($tipo_iter_sfavorito[$id_loop][$k_tg] == 'C') AND (!(abs(@$delta_salto_check_sfavorito) < 0.001)));
$check_iter_C_sfavorito=($tipo_iter_sfavorito[$id_loop][$k_tg]='C')和(!(abs(@$delta_salto_check_sfarito)<0.001));
。。。没关系

相当于

($check_iter_C_sfavorito = ($tipo_iter_sfavorito[$id_loop][$k_tg] == 'C')) AND (!(abs(@$delta_salto_check_sfavorito) < 0.001));
($check_iter_C_sfavorito=($tipo_iter_sfavorito[$id_loop][$k_tg]='C'))和(!(abs(@$delta_salto_check_sfavorito)<0.001));

因为AND的优先级低于赋值(=)

它直接在文档中指定:

的绑定优先级低于
=
,因此您对
的语句被视为

($foo = 'bar') AND 'baz';
记住,在PHP中,赋值的结果就是被赋值的值。以下是标准“检查数据库故障”代码的工作原理:

$result = mysql_query($sql) or die(msyql_error());
由于
绑定低于
=
,因此该语句被解析为:

($result = mysql_query($sql)) or die(mysql_error());

如果DB查询失败,它将返回false,并将其分配给$result。该赋值的结果也是false,这将使用die cal获取
,从而导致脚本中止。如果查询成功,它将返回一个非false值(语句句柄),并且由于布尔短路,
不会启动。

只需几秒钟,我没有给出Marc这样的完整描述
$result = mysql_query($sql) or die(msyql_error());
($result = mysql_query($sql)) or die(mysql_error());