1.===比较运算符

记得上上篇中说过===与==的问题。当时说,===还要类型相同。但到底是怎样呢?因为我们知道比较运算符是可以把两个值类型转换的。举个栗子,如果一个数字和字符串比较,则字符串会转化为数字进行比较。而===运算符就是一个特例了,她不会进行类型转换。再举个栗子,比如我们要在一个邮箱地址查找@符号的地址就可以用到这个运算符。代码如下

 <?php
if(strpos($_POST['email'],@) === false){
echo "不是正确E-mail地址";
}
?>

strpos函数会返回第一次出现时的下标,如果没有出现就返回false。但是如果我们不用===而用==会出现一个问题,就是当字符出现在第一个位置时,会返回数字0。而拿0去与false比较,false会转换为0,其结果就会不对。所以我们用===来完成这个判断。!==也是一样的效果。

2.浮点数的比较

由于系统的原因,浮点数的精度是有限的。在经过一些操作后,精度的误差会特别大。最后就会导致函数floor((0.1+0.7)*10)的结果不是0.8而是0.7。因为在机器内部的表示中,(0.1+0.7)*10为7.9999999...。所以记住一句话,“永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。”。但我们可以尝试在一定精度下,判断两个浮点数。比如这个判断语句

if(abs($a - $b) < 0.000001)

也就是差值比较。

也可以使用函数bccomp(比较数, 比较数, 比较位数);

比如bccomp('2.23456','2.23457', 3)返回0(表示相等),

bccomp('2.23456','2.23457', 5)返回-1(表示右边大于左边)。

最后,还可以用intval()函数。先把浮点数扩大,然后用这个函数强制转换为整型变量,再进行比较。

PHP初学留神(二)的更多相关文章

  1. Python爬虫初学(二)—— 爬百度贴吧

    Python爬虫初学(二)-- 爬百度贴吧 昨天初步接触了爬虫,实现了爬取网络段子并逐条阅读等功能,详见Python爬虫初学(一). 今天准备对百度贴吧下手了,嘿嘿.依然是跟着这个博客学习的,这次仿照 ...

  2. node.js 初学(二)—— 搭建注册/登录服务器

    node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...

  3. PHP初学留神(五)·小结

    来学习快两个月了,这周末即将回家开始写论文.那么走之前,好好总结一下这两个月的所学所得吧.这段时间,在实验室里做的Web开发主要涉及到了web开发的一些框架内容以及php基础知识.思维导图记录如下. ...

  4. PHP初学留神(三)

    星期一进行面试结束后,意味着我的考研日子也结束了,以及我的2013.在好好总结之后还不能停止学习,心想着要把算法继续学下去,还有Linux.不过呢,始终都要记住尼采老师的这句当头棒喝:“不加选择的知识 ...

  5. Spring初学笔记(二):Bean的注入

    关于Bean的注入 在上一篇中,已经说到虽然注入确实可以降低类与类之间的耦合,但并没有解决调用者必须知道类的创建方法的问题,也可以说是没有实现调用者与类实现的解耦,我们也提到,为了实现两者的解耦,可以 ...

  6. maven初学(二)archeType插件使用

    archeType是一个maven插件,它的主要功能是根据模板来创建工程结构 创建工程结构: 1,创建工程目录 2,输入命令:mvn archetype:generate 3,选择需要的archety ...

  7. html初学(二)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <table bor ...

  8. 初学Ajax(二)

    $.get()和$.post() .load()方法是局部方法,因为它需要一个包含元素的jQuery对象作为前缀.而$.get()和$.post()是全局方法,无须指定某个元素.对于用途而言,.loa ...

  9. 初学Android 二 创建项目以及目录结构

    命令行创建 android create project Usage: android [global options] create project [action options] Global ...

随机推荐

  1. [Practical Git] Remove unnecessary git tracking with .gitignore files

    Most projects have automatically generated files or folders from the operating system, applications, ...

  2. iOS开发——高级技术&摇一摇功能的实现

    摇一摇功能的实现 在AppStore中多样化功能越来越多的被使用了,所以今天就开始介绍一些iOS开发的比较实用,但是我们接触的比较少的功能,我们先从摇一摇功能开始 在 UIResponder中存在这么 ...

  3. 10个android开源项目

    http://www.51testing.com/?uid-116228-action-viewspace-itemid-244285 1.Android团队提供的示例项目 如果不是从学习Androi ...

  4. 解决MVC Jquery"此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站"的问题

    在ASP.NET MVC项目中,使用AJAX向控制器发送GET请求获取JSON数据时,出现这个错误:"此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站.若要允许 G ...

  5. ubuntu 安装sublime并激活

    1:add-apt-repository ppa:webupd8team/sublime-text-3加载sublime的源2:sudo apt-get update更新源 3:sudo apt-ge ...

  6. 关于Struts2中的值栈与OGNL表达式

    1.1.1    OGNL概述: Object Graphic Navigation Language(对象图导航语言)的缩写 * EL     :OGNL比EL功能强大很多倍. 它是一个开源项目. ...

  7. 五个在XML文档中预定义好的实体

    下面是五个在XML文档中预定义好的实体: < < 小于号 > > 大于号 & & 和 &apos; ' 单引号 " " 双引号 实体 ...

  8. php xml常用函数的集合(比较详细)

    1.DOM 函数 a.DOMDocument-<load()作用:加载xml文件用法:DOMDocument-<load( string filename )参数:filename,xml ...

  9. 也谈一下Activiti工作流节点的自由跳转

    最近在搞openwebflow的工作流节点自由跳转功能,在网上看了一些资料,感觉不是很好,总结原因如下: 直接手动调用SqlSession的操作,感觉会漏掉一些重要的初始化操作(如:启动新节点之后加载 ...

  10. vc静态加载dll和动态加载dll

    如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib, &quo ...