关于 PHP Boolean 的细节

最近比较喜欢抠细节,因为这些细节对于代码的编写以及bug 查找非常有帮助,能够很大程度上提高项目的开发速度.

废话少说,我们开始讲解 php Boolean.

首先,boolean 型是 php的基本数据类型, 它要么是true,或者false. 大小写不区分.

如果需要将其他类型转换为bool类型的时候, 可以使用(bool) 或者(boolean),(Boolean)进行转换.

echo true === (bool)-1;
echo true === (boolean)-1;
echo true === (Boolean)-1;
	public function test_true () {
		$this->assertTrue(-1 == true); //-1	=> true
		$this->assertTrue("false" == true); //"false" => true
		$this->assertTrue("null" == true);  //"null"  => true
		$this->assertTrue("0.0" == true);   //"0.0"   => true

		$this->assertTrue((bool)-1);
		$this->assertTrue((boolean)-1);
		$this->assertTrue((Boolean)-1);

	}

	public function test_false () {
		$this->assertTrue (null == false);//null => false
		$this->assertTrue (0 == false);   //0	 => false
		$this->assertTrue (0.0 == false); //0.0	 => false
		$this->assertTrue ("" == false);  //""	 => false
		$this->assertFalse (" " == false); //" " => true
	}

以上是我写的两个简单的测试用例. 全部都断言成功.

-1 ==  true 结果为true.

同理 null == false 结果也为true .

就是非严格的类型比对.

还有要注意搞清楚 bool , boolean , Boolean . 其实应该是没有太大区别的. 但是始终要记住, 它只是基本的数据类型,并没有什么类的概念...

关于 PHP Boolean 的细节

时间: 2024-08-15 04:40:29

关于 PHP Boolean 的细节的相关文章

Java中容易被你忽略的细节(一)

1.在一个程序当中代码段访问了同一个对象从单独的并发的线程当中,那么这个代码段叫"临界区" 怎么解决呢:使用同步的机制对临界区进行保护 同步的两种方式:同步块和同步方法 对于同步来说都是使用synchronized方法 每一个对象都有一个监视器,或者叫做锁. java用监视器机制实现了进程之间的异步执行 2.Struts框架基于MVC模式 Struts的工作流程: 在web应用启动时就会加载初始化ActionServlet,ActionServlet从 struts-config.xm

【Android接口实现】ActionBar利用整理的一些细节

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 关于ActionBar的使用,非常多大神早就已经写了非常好的文章进行了介绍,所以ActionBar的基本使用本文再赘述.今天我们主要讨论一下ActionBar在使用中的一些细节问题. 1.使用ActionBar的手机版本号限制是什么? 系统原生的ActionBar是在Android3.0(API 11)才引入的,主要用来提供一个统一风格的导航栏.来取代Activity的标题栏.对于手机来说,版本号仅仅存在

Java提高篇(三五)-----Java集合细节(一):请为集合指定初始容量

集合是我们在Java编程中使用非常广泛的,它就像大海,海纳百川,像万能容器,盛装万物,而且这个大海,万能容器还可以无限变大(如果条件允许).当这个海.容器的量变得非常大的时候,它的初始容量就会显得很重要了,因为挖海.扩容是需要消耗大量的人力物力财力的.同样的道理,Collection的初始容量也显得异常重要.所以:对于已知的情景,请为集合指定初始容量. public static void main(String[] args) { StudentVO student = null; long

Java提高篇(三六)-----java集合细节(二):asList的缺陷

在实际开发过程中我们经常使用asList讲数组转换为List,这个方法使用起来非常方便,但是asList方法存在几个缺陷: 一.避免使用基本数据类型数组转换为列表 使用8个基本类型数组转换为列表时会存在一个比较有味的缺陷.先看如下程序: public static void main(String[] args) { int[] ints = {1,2,3,4,5}; List list = Arrays.asList(ints); System.out.println("list'size:&

实在没想到系列——HashMap实现底层细节之keySet,values,entrySet的一个底层实现细节

我在看HashMap源码的时候发现了一个没思考过的问题,在这之前可以说是完全没有思考过这个问题,在一开始对这个点有疑问的时候也没有想到居然有这么个语法细节存在,弄得我百思不得其解,直到自己动手做实验改写了代码才完全明白. HashMap里面保存的数据最底层是一个Entry型的数组,这个Entry则保留了一个键值对,还有一个指向下一个Entry的指针.所以HashMap是一种结合了数组和链表的结构.正因为如此,你有3种对数据的观测方式:keySet,values,entrySet.第一个是体现从k

Java 集合细节(二):asList 的缺陷

在实际开发过程中我们经常使用 asList 讲数组转换为 List,这个方法使用起来非常方便,但是 asList 方法存在几个缺陷: 一.避免使用基本数据类型数组转换为列表 使用 8 个基本类型数组转换为列表时会存在一个比较有味的缺陷.先看如下程序: public static void main(String[] args) { int[] ints = {1,2,3,4,5}; List list = Arrays.asList(ints); System.out.println("list

javase学习笔记]-7.7 this之细节与应用

这一节我们接着上一节来继续学习this关键字. 我们之前在7.5节中的构造函数应注意的细节中提到过一个细节就是构造函数可以调用一般函数,但一般函数不能直接调用构造函数.但是我们没有深究构造函数能不能调用构造函数,那么现在我们就来看一看这个问题. 那么构造函数与构造函数之间是怎么访问呢? 为了掌握这个问题,我们必须要明确一个概念,那就是在一个类中的成员如果要被执行,就必须由对象调用.而每个对象都有一个所属的this. java语言给了关键字this这个功能,那就是用this调用构造函数,而且也是通

ExtJS与jQuery的一点细节上的对比

首先说明这不是一篇完整解读ExtJS和jQuery所有方面差异的文章,只是针对我个人刚看了两天的jQuery产生的一些疑问的整理.之前用过一段时间ExtJS,了解ExtJS的一些机制.现在做移动开发,又选定了jquery mobile,要写控件,所以需要了解jquery.(不过换工作之后应该不会再用jQuery了,坑估计是短期内填不上了) 1.jQuery是个什么东西?Ext是什么东西?(此处不是指两个框架,而是指我们在写程序的时候,经常用到的两个关键字--暂时称之为关键字) 之前用的是ExtJ

JDBC-resultSet对象细节

ResultSet对象 功能: 当执行的语句是查询语句时, resultSet对象用于封装查询结果. 方法: boolean next() 该方法让结果集中的指针(游标)往下移动一行.并且判断改行是否有数据. 有返回true,没有返回false String getString(int cloumnCount) 从当前指向的行中获得String 类型的数据. 根据列所在的索引位置取. String getString(String columnName) 从当前指向的行中获得String 类型的