坑神记php运算符

<?php 
$a=3; 
$b=6; 
if($a=5||$b=7){ 
$a++; 
$b++; 

var_dump($a, $b);

陷阱一

把$a=5、$b=7看成了$a==5、$b==7 
错误结果:3,6

陷阱二

运算符的优先级,认为$a=5赋值成功$b=7没执行 
错误结果:6,7

正确理解

陷阱是运算符的优先,赋值运算符(=)的优先级是最低的,所以正确理解应该是 
$a=(5||$b=7) 
正确结果:true,7

升级一下 
变形一

代码如下:

$a=3; 
$b=6; 
$c=1; 
if($a=5||$b=7 && $c=10){ 
$a++; 
$b++; 

var_dump($a, $b,$c);

变形二

代码如下:

$a=3; 
$b=6; 
$c=1; 
if($a=0||$b=7 && $c=10){ 
$a++; 
$b++; 

var_dump($a, $b,$c);

时间: 2024-10-02 23:00:04

坑神记php运算符的相关文章

vue2入坑随记(二) -- 自定义动态组件

学习了Vue全家桶和一些UI基本够用了,但是用元素的方式使用组件还是不够灵活,比如我们需要通过js代码直接调用组件,而不是每次在页面上通过属性去控制组件的表现.下面讲一下如何定义动态组件. Vue.extend 思路就是拿到组件的构造函数,这样我们就可以new了.而Vue.extend可以做到:https://cn.vuejs.org/v2/api/#Vue-extend // 创建构造器 var Profile = Vue.extend({ template: '<p>{{firstName

vue2入坑随记(一)

都说Vue2简单,上手容易,但小马过河,自己试了才晓得,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前随便拿全局变量和修改dom的锤子不能用了,变换到关注数据本身.vue的官方文档还是不错的,由浅到深,但是当你用vue-cli构建一个工程的时候,发现官方文档还是不够用,得参考git上开源的项目并去学习es6.而且vue的全家桶(vue-cli,vue-router,vue-resource,vuex)还是都要上的. 1.vue-cli 这个构建工具大大降低了webpa

【strpos】php的strpos的坑,记一次

php > var_dump(strpos('开始23测试ceshi', '测试')); int(8) php > var_dump(mb_strpos('开始23测试ceshi', '测试')); int(4) php > var_dump(strpos('123测试ceshi', '测试')); int(3) php > var_dump(mb_strpos('123测试ceshi', '测试')); int(3) php > var_dump(strpos('测试23a

git 填坑记录----记一次git低版本引发的问题

git版本略低,引发的血案 原本部署在阿里云上的项目,准备放到内网jenkins上发布,配置完成后发版,jenkins变红了,详细错误信息如下 ERROR: Error cloning remote repo 'origin' hudson.plugins.git.GitException: Command "git fetch --tags --progress https://gitlab.kingtool.top/admin-public/cshopfront.git +refs/head

百度地图sdk踩坑之旅

1.写在前面 项目中需要加上路线规划,导航,添加覆盖物,因为我最开始项目中定位我使用的是百度定位,所以为了省事,接着使用百度地图sdk实现这些.这两天踩了很多百度地图的坑,记下来.因为一些原因,后面会说,需求还没做完,所以效果图很简单,如下. 2.坑1,环境配置 对于百度地图sdk的配置我是无语.因为一开始项目中并没打算使用百度地图其他功能,只是准备定位.所以我下载sdk时只是下载了定位的sdk,如图 现在需要加上地图和导航的sdk(后面才知道导航并不需要下载专门的导航sdk,因为地图sdk可以

Verilog的各种坑

Verilog语言和软件语言不一样,有些时候理所当然的编写,也没有报语法错误,可是功能就是不对.唉,把遇到的坑都记在本篇博客吧. 1. initial begin...end里面不能有always,如果非要在里面达到always的效果,那用forever就行了. 2. reg   [3:0] a=4'd7; 这样写是对的, wire [3:0] a=4'd7; 这样写是错的. 3. 时序电路建议赋初始值,组合电路则不需要. 4. Verilog中不建议使用 * 和 / ,%可以偶尔使用. 5.

PHP 操作MySQL

php中操作mysql数据库的函数 php最初提供一套连接操作mysql函数 mysql_xxx(); 后来提供了增强版函数 mysqli_xxx(); 使用php连接mysql服务器步骤 1:创建到mysql服务器连接 $conn = mysqli_connect(url,uname,upwd,dbname); url mysql服务器地址 '127.0.0.1' uname mysql用户名 'root' upwd mysql密码 '' dbname 连接哪个库 'dangdang' 2:向

分治思想的应用之快速排序

快速排序算法与归并排序很像,都是分治的思想.不同点在于归并排序算法是通过位置下区分两个区间,而快速排序算法是用值来区分两个区间.所以归并排序算法还需要合并的操作,而快速排序则不需要. 快速排序算法最核心的地方在于:在区间中选择一个值pivot,让大于pivot的都在它的一边,而让小于pivot的都在另一边. private static int partititon(int[] a,int l,int r){   int idx = mid3(a,l,(l+r)/2,r);   int pivo

答读者问(9):有关如何看待学校的好坏及如何应对毕业之前的迷茫等问题

最近,收到一位大学生读者的邮件,内容如下: 你好,周老师,我现在是一个大专的屌丝,学校也是野鸡大学来的,软件工程专业,9月份就大三了,但是学校这边有个校企合作的项目,免费让我们过去培训机构培训,因为都快大三了,英语能力不行,不知道为什么怎么学都不会,也可能是自身努力跟方法不够.而且由于是野鸡学校,专业不怎么顶尖,因此老师的水平也是一般的,我的成绩在班里是排名第一的,我依然很迷茫,我觉得那种按部就班跟几百年都没换的学习模式的教学完全培养不出一个真正的程序员,学java部分的时候就知道老师坑神一个了