php - 逻辑与运算符的奇怪行为
问题描述
有没有人能够解释这种行为:
<?php
$var1 = true;
$var2 = 0;
$var3 = $var1 AND $var2;
var_export($var3); // Output: true
var_export(true AND 0); // Output: false
var_export($var1 AND $var2); // Output: false
输出来自 PHP 7.0
为什么第一个输出true
是第三个输出false
?
$var2
顺便说一句: is0
或.无关紧要false
。行为是相同的。
@all:我知道我应该使用&&
而且我总是这样做!
解决方案
它实际上是因为&&
不同于AND
.
$var1 = true;
$var2 = 0;
$var3 = $var1 && $var2;
var_export($var3); // Output: false
$var3 = $var1 AND $var2;
var_export($var3); // Output: true
在&&
你实际写的情况下$var3 = ( $var1 && $var2 )
在AND
你实际写的情况下( $var3 = $var1 ) AND $var2
那是因为=
then 具有更大的优先级AND
,但是then&&
具有更大的优先级=
推荐阅读
- javascript - 承诺循环!如何?
- python - 使用 shutil.make_archive 压缩文件的意外文件
- intellij-idea - 在 Intellij 社区版中为 .csv 文件实现“以表格形式编辑”功能的插件或其他方法等替代品
- php - 使用 AJAX 调用 URL 时出错
- python - 绘制与输入不同的 x 轴值
- html - Oracle Apex PL/SQL 函数正文默认值不正确打印
- json - 如何使用 angular4 从 appsettings.json 读取键值到打字稿文件
- java - 关闭对象中包含的 InputStream
- verilog - 如何在 Chisel3 中进行门级仿真?
- html - 如何仅为任何 div 设置边框底部