记一次学习PHP中的错误
今天学习PHP时,回想起一段代码
<?php>
$i = true;
$o = true;
$p = false;
if($i or $o and $p){
echo '输出为'.'true';
}
else{
echo '输出为'.'false';
}
// 结果输出是true
当时非常纳闷,因为在看《PHP从XX到XX》一书时,里面介绍的优先级是这样的:


这两个不是同等优先级的吗?
如果是,为什么输出的不是false
接下来得到某群主的教导,“把前面的判断括号”,结果如下:
<?php>
$i = true;
$o = true;
$p = false;
if(($i or $o) and $p){
echo '输出为'.'true';
}
else{
echo '输出为'.'false';
}
// 结果输出是false
不是程序问题,那就是优先级的问题,最后查了一下优先级,如下表:
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
| 结合方向 | 运算符 | 附加信息 |
|---|---|---|
| 无 | clone new | clone 和 new |
| 左 | [ | array() |
| 右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
| 无 | instanceof | 类型 |
| 右 | ! | 逻辑运算符 |
| 左 | * / % | 算术运算符 |
| 左 | + – . | 算术运算符和字符串运算符 |
| 左 | << >> | 位运算符 |
| 无 | == != === !== <> | 比较运算符 |
| 左 | & | 位运算符和引用 |
| 左 | ^ | 位运算符 |
| 左 | | | 位运算符 |
| 左 | && | 逻辑运算符 |
| 左 | || | 逻辑运算符 |
| 左 | ? : | 三元运算符 |
| 右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
| 左 | and | 逻辑运算符 |
| 左 | xor | 逻辑运算符 |
| 左 | or | 逻辑运算符 |
| 左 | , | 多处用到 |
这个匪夷所思的问题就在这里结束了。。
记一次学习PHP中的错误的更多相关文章
- 学习PDO中的错误与错误处理模式
在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...
- [RxJava]在学习RxJava中的错误理解
关于RxJava语法的问题与理解 最近看到一个blog-RxJava 写到关于Observable数据异步加载的介绍.针对fromCallable和just操作符在使用上的问题来跟大家针对代码进行 ...
- 记vs2017编辑launchSettings.json中launchUrl错误
当编辑launchSettings.json中launchUrl后,api访问出错,Swagger页面不能使用. 解决方法:将项目根目录下.vs文件夹删除,然后重新生成,ok
- Python学习-16.Python中的错误处理
虽然叫错误,但跟 C# 中的异常是一回事.只不过 Python 中叫错误(Error)而 C# 中叫异常(Exception). 先手工产生一个异常: file = open('','r') 上面一句 ...
- ***PHP中error_reporting()用法详解(含codeigniter框架中屏蔽错误提示的解决方案)
php中我们对错误的处理会常用到error_reporting函数了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,这个到底什么意思呢,下面我来来看看. e ...
- Android学习开发中如何保持API的兼容
Android学习开发中如何保持API的兼容: 1,采用良好的设计思路 在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久 面向用例的设计,收集用户建议,把自己模拟成用户,保证AP ...
- 学习Spring中遇到关于BeanFactory及测试类的问题
最近在学习Spring,使用的是Spring 5.0.1 学习书本中使用的是4.0 学习书本中使用以下来加载配置文件及设置 Resource resource = new ClassPathResou ...
- 记一次解决cmd中执行java提示"找不到或无法加载主类"的问题
今天遇到一个问题:在cmd命令行中,用javac编译java文件可以成功,但是用java执行却提示“找不到或无法加载主类”.现将该问题的原因以及解决办法记录一下. 先理解一下系统变量path和clas ...
- mybatis学习笔记--常见的错误
原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...
随机推荐
- yum 安装 lnmp
一. 系统 更新 yum -y update 二. 安装nginx 创建文件 vim /etc/yum.repos.d/nginx.repo 文件内容,这配置是安装最新的稳定版1.8 [nginx] ...
- flash 动画展示
- 乘风破浪:LeetCode真题_007_Reverse Integer
乘风破浪:LeetCode真题_007_Reverse Integer 一.前言 这是一个比较简单的问题了,将整数翻转,主要考察了取整和取余,以及灵活地使用long型变量防止越界的问题. 二.Reve ...
- 查看oracle数据库最近执行了哪些sql语句
SELECT b.sql_text, --content of SQL a.machine, --which machine run this code a.username, a.module, - ...
- Join的加强版CountDownLatch
CountDownLatch允许一个或多个线程等待其他线程完成操作. 假如有这样一个需求:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每个线程解析一个sheet里的数据, ...
- Week7:SVM难点记录
1.函数dataset3Params(),如何计算模型估计偏差的? model=svmTrain(X,y,c_array,@(x1,x2)gaussianKernel(x1,x2,sigma_arra ...
- Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现
# coding=utf8 import paramiko """ /* python -m pip install paramiko python version 3. ...
- xmppframework 简介
XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开 ...
- java中的作用域
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友 ...
- 阿里云阿里免费ssl wap网站在手机微信、手机浏览器无法访问
图片可以访问,样式无法显示 https://css.cnbuses.com/css/wap/gonggong.css 1,怀疑是开了代理访问. 关闭后还是访问空白. 2.在手机浏览器打开,提示该网站的 ...