刨根问底儿 -- intVal($str) 跟 (int) $str 的运算结果有什么区别

intVal($str) 跟 (int) $str 都是把其他类型的变量转化为int型变量的方式,这么多年来我一直森森滴怀疑它们的运算结果在某些条件下会有区别。对于我的疑问,文档里也没有多说(或者我没找到),还是做个实验验证一下吧。

除了intVal函数的第二个参数可以指定$str字符串的进制形式外,对于普通的10进制数字型字符,这两种方式有什么样的区别呢?

小实验:

 

$arr = array('$a' => 19,'$b' => 19.99,'$c' => '19.99','$d' => '','$d' => 'sfsdf','$f' => '0x20','$e' => array('19.99')
);foreach ($arr as $k => $v){$v = intval($v);echo "intval({$v}) is :" , var_dump($v) , PHP_EOL;
}
echo '-----------------------', PHP_EOL;
foreach ($arr as $k => $v){$v = (int)($v);echo "intval({$v}) is :" , var_dump($v) , PHP_EOL;
}
die();


 

输出结果:

 

intval(19) is :int(19)intval(19) is :int(19)intval(19) is :int(19)intval(0) is :int(0)intval(0) is :int(0)intval(1) is :int(1)-----------------------
intval(19) is :int(19)intval(19) is :int(19)intval(19) is :int(19)intval(0) is :int(0)intval(0) is :int(0)intval(1) is :int(1)


实验分析:输出的结果有两个值得注意的地方,第一,他们的结果完全一致;第二,非空会被转化为1,空会被转为0。

 

实验结论:

输出结果没啥区别,但intval()毕竟是要有函数调用的,所以相比较而言会慢那么一丢丢。


课外题:

 

$v = intval($v);

 

改成

 

$v = intval($v * 100);

 

试一下,会有什么惊喜?!



另外,举一反三,其他的类型转换方式会不会有相同的答案呢?试一下吧!


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Technical User Stories – What, When, and How?

http://rgalen.com/agile-training-news/2013/11/10/technical-user-stories-what-when-and-how It happens to me on a weekly basis. I’m teaching a class on how to write User Stories. Usually it’s part of my Product Owner workshop. We’re happily writing storie…

主成分分析和因子分析十大不同点

主成分分析和因子分析无论从算法上还是应用上都有着比较相似之处,本文结合以往资料以及自己的理解总结了以下十大不同之处,适合初学者学习之用。 1.原理不同 主成分分析基本原理:利用降维(线性变换)的思想,在损失很少信…

PostgreSQL 最佳实践 - 水平分库(基于plproxy)

背景 我一直以来都比较推荐plproxy这个PostgreSQL代理软件, 因为它小巧灵活好用, 效率高. 最近朋友邀请我给他们做个分布式的方案, 所以又把plproxy翻出来了. 本文讲一讲在单节点中如何快速的部署plproxy环境. 环境 PostgreSQL 9.3.1 plproxy 2.x plrpoxy节点 hostaddr 1…

Andorid之教你全手工去除定制软件

什么钛备份, RE管理器, 豌豆荚 recovery模式. 都一边休息着去吧. 为了删掉几个 软件 而安某个软件, 这也太浪费表情了. 一直都不信任到处都提供的下载, 毕竟,我们的安全性比什么都重要. 做好资料的保密, 不让随便传播, 这个问题应该是我们最关心的问题. 要不然, 一不小心又出来…

通过Rancher Desktop在桌面上运行K8s

Rancher 发行的操作系统新选择:Rancher Desktop for Windows,它可以帮助你在Windows桌面上管理Kubernetes和容器。当然他当然会支持Linux,Mac的。准备工作在我们探索全新的Rancher Desktop之前,我们需要准备以下内容:1…

数学家排名,高斯第二牛顿第三?!看完第一的简历,他果然比牛顿还牛逼.........

如果让你给数学家排名,你会怎么排?谁排第一?高斯?阿基米德?还是其他哪位数学神仙?今天早上超模君发现,在国内某排行网站上,由网友投票选出来“世界十大数学家”里,名列前…

oc引导windows蓝屏_跟电脑蓝屏say no!【亲测有效】

​ 01专业解释电脑蓝屏,又叫蓝屏死机(Blue Screen of Death,简称BSOD),是微软的 Windows 系列操作系统在无法从一个系统错误中恢复过来时,为保护电脑数据文件不被破坏而强制显示的屏幕图像。 看到了吧&…

C语言常用基础位操作

1、使用下面的代码将最右边的1改变为0,假如没有1则结果为0(e.g.,01011000>01010000): x & (x-1) 此代码可以用来判断一个无符号的整数是否为2的幂,假如x & (x-1)1,则x为2的幂&#…

Android系统手机端抓包方法(tcpdump)

抓包准备 1. Android手机需要先获得root权限。一种是否获得root权限的检验方法:安装并打开终端模拟器(可通过安卓市场等渠道获得)。在终端模拟器界面输入su并回车,若报错则说明未root,若命令提示符从$变#则为rooted&am…

hdu 1800 (map)

链接:http://acm.hdu.edu.cn/showproblem.php?pid1800 Flying to the Mars Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10830 Accepted Submission(s): 3472 Problem DescriptionIn the year 8…

数据挖掘在金融行业十大应用

目前数据挖掘在各行各业应用广泛,尤其在金融、保险、电子商务和电信方面得到了很好的效果,本文对金融行业数据挖掘应用做了一个简单的总结,目的是想起到抛砖引玉的作用,欢迎各位大牛拍砖。 一:风险控制(贷款…

.NET 6 中的七个 System.Text.Json 特性

忽略循环引用在 .NET 5 中,如果存在循环依赖, 那么序列化的时候会抛出异常, 而在 .NET 6 中, 你可以选择忽略它。Category dotnet new() {Name ".NET 6", }; Category systemTextJson new() {Name "System.Text.Json",Parent dotnet }; do…

Redis整合Spring结合使用缓存实例

林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka 摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的方法切入到有需要进入缓存的类或方法前面。 一、Redis介绍 什么是Redis? redis…

读取无线手柄数据_xbox series x/s 手柄开箱

原标题:xbox series x/s 手柄开箱xbox series x/s 手柄开箱 2020-11-12 08:29:003点赞2收藏4评论小编注:此篇文章来自#原创新人#激励计划,新人发文前三篇文章,篇篇额外奖励50金币。参加超级新人计划活动,新人发文即可瓜…

豆瓣评分9.4!这一部纪录片,探秘中国人迹罕至的未至之境!

全世界只有3.14 % 的人关注了爆炸吧知识Bilibili 联合“美国国家地理”,悄悄出品了一部史诗级动物记录片,忍不住要推荐给大朋友小朋友们——《未至之境》。这部纪录片由B站和国家地理联合创作,从绵延万里的山脉高原到枝繁叶茂的雨林竹海&…

ssh无密码公钥登陆

根据自己的发展历程,回忆一下,之前接触到的都是密码用户登录,自从到了好孩子集团,感受了证书登录的情况,刚开始很抵触,超不习惯,而且当时对原理不了解,总是出错,给运维的…

使用OpenTelemetry搭配Zipkin构建NetCore分布式链路跟踪 | WebAPI + gRPC

OpenTelemetry介绍OpenTelemetry是一组标准和工具的集合,旨在管理观测类数据,如 trace、metrics、logs 等。通过标准化不同的应用程序和框架如何收集和发出可观察性遥测数据,OpenTelemetry旨在解决这些环境带来的一些挑战。OpenTelemetry包括…

C语言 linux环境基于socket的简易即时通信程序

转载请注明出处:http://www.cnblogs.com/kevince/p/3891033.html ——By Kevince 最近在看linux网络编程相关,现学现卖,就写了一个简易的C/S即时通信程序,代码如下: head.h 1 /*头文件,client和server…

腾讯云cloudlite认证_【腾讯云】考个证...大数据开发工程师认证

作为一个大数据行业的从业者,考个腾讯云大数据开发工程师认证总比考个消防证 easy 吧…?关于考这个认证的意义其实主要在于全面复习一下大数据相关的知识点,另外有个腾讯云的认证,也许大概也会对你找工作有点帮助的吧?…

Logistic回归主要应用领域

主要应用领域 1、预测是否发生、发生的概率(流失、客户响应等预测) 如果已经建立了logistic回归模型,则可以根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大。 2、影响因素、危险因素分析&#xff…