PHP 布尔值的自增与自减的实现方法

在上午和业务需求战斗结束之后,准备打开群看看各位老司机有没有看车,突然看到 @E舞九天 II 发的一些消息

他发现,PHP 的布尔值自增,无论自增多少遍,最后输出的都是 1

这就比较有趣了~

自增和自减,++$a 和 $a++ 的区别大家都知道

++a 表示取 a 的地址,增加内存中 a 的值,然后把值放在寄存器中
a++ 表示取 a 的地址,把 a 的值装入寄存器中,然后增加内存中 a 的值

我打开一个编辑器,去确认一下这个结果

$a = true;
var_dump(--$a);
echo PHP_EOL;
echo $a;
$b = false;
echo PHP_EOL;
var_dump(++$b);

运行最后输入结果如下

bool(true)
1
bool(false)

发现结果和之前设想的不太对,PHP 对于布尔值的自增运算没有做任何处理,而自增后为 1 是因为我们使用了 echo 去输出,导致 bool 被强转

去查询 PHP 的官方文档,没想到有一行很明显的提示

Note: 递增/递减运算符不影响布尔值。递减 NULL 值也没有效果,但是递增 NULL 的结果是 1。

总结

以上所述是小编给大家介绍的PHP 布尔值的自增与自减,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • php 根据自增id创建唯一编号类

    在开发过程中,我们数据表一般都使用自增数字作为id主键,而id是数字型,不容易理解.我们把id按一定格式转为编号后,很容易根据编号知道代表的是什么内容. 例如订单表id=20160111197681234,只看id我们并不知道这个id是订单表的id,而转为编号O-20160111197681234,则很容易看出是订单表的记录,然后可以根据id在订单表中搜寻. 编号创建的规则 1.唯一 使用自增id生成,保证唯一性 2.尽可能短 可使用数字求余对应字母的方式处理,创建较短的编号 算法原理 1.加自

  • PHP中ID设置自增后不连续的原因分析及解决办法

    PHP中ID设置自增后不连续的原因分析如下所述: alter table tablename drop column id; alter table tablename add id mediumint(8) not null primary key auto_increment first; 每次删除把这两行家伙加上就行了 还有就是这个 使用mysqli对象中的query()方法每次调用只能执行一条SQL命令. 如果需要一次执行多条SQL命令,就必须使用mysqli对象中的 multi_que

  • php实现Mongodb自定义方式生成自增ID的方法

    本文实例讲述了php实现Mongodb自定义方式生成自增ID的方法.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: //首先创建一个自动增长id集合 ids >db.ids.save({name:"user", id:0}); //可以查看一下是否成功 > db.ids.find(); { "_id" : ObjectId("4c637dbd900f00000000686c"), "name" : &q

  • PHP 布尔值的自增与自减的实现方法

    在上午和业务需求战斗结束之后,准备打开群看看各位老司机有没有看车,突然看到 @E舞九天 II 发的一些消息 他发现,PHP 的布尔值自增,无论自增多少遍,最后输出的都是 1 这就比较有趣了~ 自增和自减,++$a 和 $a++ 的区别大家都知道 ++a 表示取 a 的地址,增加内存中 a 的值,然后把值放在寄存器中 a++ 表示取 a 的地址,把 a 的值装入寄存器中,然后增加内存中 a 的值 我打开一个编辑器,去确认一下这个结果 $a = true; var_dump(--$a); echo

  • node.js Sequelize实现单实例字段或批量自增、自减

    一.单实例自增.自减 在Sequelize中,一个实例(Instance)表示数据库中的一行记录.Instance有两种:由Model.build()创建的非持久化实例,和由Model.create()等方法创建的持久化实例.无论是持久化还是非持久化实例,都会有increment() .decrement()两人上方法,分别用于字段值的自增和自减两种操作. instance.increment(fields, [options]) - 字段值自增 instance.decrement(field

  • JavaScript中的boolean布尔值使用学习及相关技巧讲解

    JavaScript中的两个基础的布尔类型的值: 1.true 2.false 布尔值 true 代表"真",false 代表"假".一般关系运算符会返回布尔值的结果.另外,数值的 0.-0.特殊值的 null.NaN.undefined 以及空字符("")都会被解释为 false ,其他值则会被解释为 true . function isMonth(mon) { if ((mon >= 1) && (mon <= 1

  • js 数字、字符串、布尔值的转换方法(必看)

    1.转换为字符串 '' + 10 === '10'; // true将一个值加上空字符串可以轻松转换为字符串类型. 2.字符串转换为数字 +'010' === 10 Number('010') === 10 parseInt('010', 10) === 10 // 用来转换为整数 +'010.2' === 10.2 Number('010.2') === 10.2 parseInt('010.2', 10) === 10 3.转换为布尔值 !!'foo'; // true !!''; // f

  • JQuery 返回布尔值Is()条件判断方法代码

    下面是JQuery的Is()方法判断: 复制代码 代码如下: $(function(){ $("ul").click(function(event){ var tar = event.target; if(tar.tagName == "STRONG"){ alert(tar.tagName); } }); }) 上面是原生JS判断: 复制代码 代码如下: $(function(){ $("ul").click(function(event){

  • JavaScript中的return布尔值的用法和原理解析

    首先return作为返回关键字,他有以下两种返回方式 1.返回控制与函数结果 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 2.返回控制无函数结果 语法为:return;在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<A>元素,页面会跳转到该元素href属性指定的页. 例如:<a href="http:www.baidu.com;alert(11);return false;ale

  • 速记Python布尔值

    在python中.布尔值有 Ture False 两种.Ture等于对,False等于错.要注意在python中对字母的大小写要求非常严格. Ture 和 False 的首字母都要大写. 而布尔值可以互相运算,用 and not or (全部小写)来运算. and 是与运算, >>> Ture and Ture Ture >>> False and Ture False >>> False and False False 在 and 运算中,只有全部为

  • MySQL中的布尔值,怎么存储false或true

    MySQL布尔值,存储false或true 简明说,数据库存储的布尔值是0和1,相当于一个字节的INT型整数 具体操作 如果是可视化界面,可以直接选择Boolean,长度设置为1.其最终显示的效果等价于TINYINT(1) 所以,zero == false:nonzero == true MySQL数据库存储布尔值 在Java编程中,我们经常会遇到将boolean值写入到mysql数据库的情况.但是,mysql数据库是没有boolean类型的,它的boolean值是用数字0和1来表示的. 下面,

  • vue储存storage时含有布尔值的解决方案

    vue储存storage时含有布尔值 今天遇到一个问题,需要将后台返回的true和false存到storage中去,然后用储存的这个值进行逻辑判断,但是一直判断都是错误的,后面查阅了一下资料才发现 在localstorage中储存数据的时候,储存的boolean值都会变成字符串,而不是刚开始储存进去的boolean值 都变成了字符串 那么怎么解决呢? 一:前端进行一次转化 if (localStorage.getItem('布尔值') == 'true') { // 重新赋值为新的值 '布尔值'

  • Java布尔值Boolean和boolean之间转换实例用法

    1.Boolean和boolean区别 Boolean是类,而boolean是基本数据类型,Boolean 定义出来的是对象,可以当对象调用,boolean 定义出来的是数据类型,只能当数据类型调用.Boolean是布尔类型包装器.这个涉及到jdk5以后的新特性,自动装箱. 2.自动装箱和自动拆箱 在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱). 自动装箱:简单的理解为将基本数据类型封装为对象类型. 自动拆箱:简单的理解为将对象重新转化为基本数据类型.

随机推荐