PHP初学留神(二)
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初学留神(二)的更多相关文章
- Python爬虫初学(二)—— 爬百度贴吧
Python爬虫初学(二)-- 爬百度贴吧 昨天初步接触了爬虫,实现了爬取网络段子并逐条阅读等功能,详见Python爬虫初学(一). 今天准备对百度贴吧下手了,嘿嘿.依然是跟着这个博客学习的,这次仿照 ...
- node.js 初学(二)—— 搭建注册/登录服务器
node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...
- PHP初学留神(五)·小结
来学习快两个月了,这周末即将回家开始写论文.那么走之前,好好总结一下这两个月的所学所得吧.这段时间,在实验室里做的Web开发主要涉及到了web开发的一些框架内容以及php基础知识.思维导图记录如下. ...
- PHP初学留神(三)
星期一进行面试结束后,意味着我的考研日子也结束了,以及我的2013.在好好总结之后还不能停止学习,心想着要把算法继续学下去,还有Linux.不过呢,始终都要记住尼采老师的这句当头棒喝:“不加选择的知识 ...
- Spring初学笔记(二):Bean的注入
关于Bean的注入 在上一篇中,已经说到虽然注入确实可以降低类与类之间的耦合,但并没有解决调用者必须知道类的创建方法的问题,也可以说是没有实现调用者与类实现的解耦,我们也提到,为了实现两者的解耦,可以 ...
- maven初学(二)archeType插件使用
archeType是一个maven插件,它的主要功能是根据模板来创建工程结构 创建工程结构: 1,创建工程目录 2,输入命令:mvn archetype:generate 3,选择需要的archety ...
- html初学(二)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <table bor ...
- 初学Ajax(二)
$.get()和$.post() .load()方法是局部方法,因为它需要一个包含元素的jQuery对象作为前缀.而$.get()和$.post()是全局方法,无须指定某个元素.对于用途而言,.loa ...
- 初学Android 二 创建项目以及目录结构
命令行创建 android create project Usage: android [global options] create project [action options] Global ...
随机推荐
- swift 开篇
苹果的WWDC ,除了公布了os x 10.10 和IOS8 外,还推出了Swift.具体点击这里 代码整体风格有点像Java,也有点像javascript. 以下给出一些代码段(来自苹果官方手冊): ...
- Timus 1446. Sorting Hat 分类问题
At the start of each school year, a very important event happens at Hogwarts. Each of the first-year ...
- 文件I/O(不带缓冲)概述
一.引言 UNIX系统中大多数文件I/O只需用到5个函数:open.read.write.lseek以及close.这些函数经常被称为不带缓冲的I/O(unbuffered I/O).术语不带缓冲指的 ...
- Mysql导出表结构及表数据 mysqldump用法
几个常用用例: 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > ...
- ajax_for example
asp.net mvc 使用Ajax调用Action 返回数据. 使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js ...
- win7如何共享文件 图文教你设置win7文件共享
点评:win7文件共享已成为网友们之间的热议,接下来为大家分享下如何共享文件,首先开启guest账户( 开始菜单 → 运行 → services.msc → 双击 server 服务项 ,设置启动类型 ...
- 如何查找局域网的外网ip
方法一:一个简单的方法 用你电脑打开www.ip138.com 就可以看到自己的公网IP地址 方法二:如果一定要从路由器里面看 那就打开路由的配置页面 一般在系统状态里面 会有个WAN口IP 那就是你 ...
- UNIX V6内核源码剖析——进程
进程的概念 1. 什么是进程 2. 进程的并行执行 3. 进程的运行状态 4. 用户模式和内核模式 cpu具有2种模式——内核模式和用户模式,通过PSW来切换. 切换时, 映射到虚拟地址的物理内存区域 ...
- bvp4c--语法
bvp4c--语法 1. bvp4c: sol = bvp4c(odefun,bcfun,solinit) sol = bvp4c(odefun,bcfun,solinit,options) so ...
- [Laravel] 获取执行的Sql
获取数据库操作记录 $queries = DB::getQueryLog(); //取最后一条是 $lastSql = end($queries); 不过这样输出的,不是真正的sql,输出的是类似PD ...