!非 !x 如果x不为true则返回true。

我们经常用!进行一些判断。

看实例,我们发现经过‘非’处理之后,都转化成了bool值。用于if判断很有用。

var_dump(!0); // bool(true)
var_dump(!false); // bool(true)
var_dump(!array()); // bool(true)
var_dump(!null); // bool(true)
var_dump(!''); // bool(true)
var_dump(!'0'); // bool(true) var_dump(!1); // bool(false)
var_dump(!true); // bool(false)
var_dump(!'1'); // bool(false)
var_dump(!'null'); // bool(false)
var_dump(!'false'); // bool(false)
var_dump(!'true'); // bool(false)

看看它们原来的类型

var_dump(0); // int(0)
var_dump(false); // bool(false)
var_dump(array()); // array(0) {}
var_dump(null); // NULL
var_dump(''); // string(0) ""
var_dump('0'); // string(1) "0" var_dump(1); // int(1)
var_dump(true); // bool(true)
var_dump('1'); // string(1) "1"
var_dump('null'); // string(4) "null"
var_dump('false'); // string(5) "false"
var_dump('true'); // string(4) "true"

强制转化为bool后的类型

var_dump((bool)0); // bool(false)
var_dump((bool)false); // bool(false)
var_dump((bool)array()); // bool(false)
var_dump((bool)null); // bool(false)
var_dump((bool)''); // bool(false)
var_dump((bool)'0'); // bool(false) var_dump((bool)1); // bool(true)
var_dump((bool)true); // bool(true)
var_dump((bool)'1'); // bool(true)
var_dump((bool)'null'); // bool(true)
var_dump((bool)'false'); // bool(true)
var_dump((bool)'true'); // bool(true)

小结:'非'处理,就是把任何类型先强制转化为bool之后,如果是true,就返回false。如果是false,就返回true。用于if条件判断很有效!

if (0) { // 不通过
echo "通过";
} else {
echo "不通过";
} if (false) { // 不通过
echo "通过";
} else {
echo "不通过";
} if (array()) { // 不通过
echo "通过";
} else {
echo "不通过";
} if (null) { // 不通过
echo "通过";
} else {
echo "不通过";
} if ('') { // 不通过
echo "通过";
} else {
echo "不通过";
} if ('0') { // 不通过
echo "通过";
} else {
echo "不通过";
} if (1) { // 通过
echo "通过";
} else {
echo "不通过";
} if (true) { // 通过
echo "通过";
} else {
echo "不通过";
} if ('1') { // 通过
echo "通过";
} else {
echo "不通过";
} if ('null') { // 通过
echo "通过";
} else {
echo "不通过";
} if ('false') { // 通过
echo "通过";
} else {
echo "不通过";
} if ('true') { // 通过
echo "通过";
} else {
echo "不通过";
}

小结: 由上述例子可以看出,if将任何类型转化成bool型,进行判断,字符串一般都是true,'0'除外!

PHP ! 非运算符 与 if 判断深入研究的更多相关文章

  1. 前端笔记知识点整合之JavaScript(二)关于运算符&初识条件判断语句

    运算符 数学运算符的正统,number和number的数学运算,结果是number.出于面试的考虑,有一些奇奇怪怪的数学运算: 数学运算中:只有纯字符串.布尔值.null能够进行隐式转换.   //隐 ...

  2. 前端笔记之JavaScript(二)关于运算符&初识条件判断语句

    运算符 数学运算符的正统,number和number的数学运算,结果是number.出于面试的考虑,有一些奇奇怪怪的数学运算: 数学运算中:只有纯字符串.布尔值.null能够进行隐式转换. //隐式转 ...

  3. javascript使用两个逻辑非运算符(!!)的原因

    javascript使用两个逻辑非运算符(!!)的原因: 在有些代码中可能大家可能会注意到有些地方使用了两个逻辑非运算符,第一感觉就是没有必要,比如操作数是true的话,使用两个逻辑非的返回值还是tr ...

  4. socket异步通信-如何设置成非阻塞模式、非阻塞模式下判断connect成功(失败)、判断recv/recvfrom成功(失败)、判断send/sendto

    socket异步通信-如何设置成非阻塞模式.非阻塞模式下判断connect成功(失败).判断recv/recvfrom成功(失败).判断send/sendto 博客分类: Linux Socket s ...

  5. 029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符

    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑"非"运算符 本文知识点:Java中的逻辑"非"运算符 逻辑& ...

  6. php类型的相关函数,运算符,条件判断,循环

    类型的相关函数 函数的原型  :函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2--) 1, 任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来 ...

  7. 值类型之间的相互转化,运算符,if条件判断,循环,函数

    值类型之间的相互转化 number | string | boolean 一.转换为boolean=>Boolean(a); var num = 10; var s = '123'; var b ...

  8. python数据类型、输入输出、运算符、条件判断、循环

    变量以及类型 变量:存储程序运行中的数据,变量有3个要素:变量名.变量类型.变量值.python属于弱类型语言,不需要声明变量类型. [root@localhost python]# ipython3 ...

  9. Python学习笔记----数据类型 运算符 循环 条件判断

    1. Python安装 在官网www.python.org下载安装程序,可以支持的操作系统linux,windows,mac. Python版本:2.x和3.x,分别有x86和x64. 在Window ...

随机推荐

  1. vue 的小秘密

    1.组件可以通过$refs调用其方法. 2.组件上也可用v-model. <input v-model="something"> == 同等 <input v-b ...

  2. 远程调用之RMI、Hessian、Burlap、Httpinvoker、WebService的比较

    一.综述 本文比较了RMI.Hessian.Burlap.Httpinvoker.WebService5这种通讯协议的在不同的数据结构和不同数据量时的传输性能. RMI是java语言本身提供的远程通讯 ...

  3. SpringMVC4整合CXF发布WebService

    SpringMVC4整合CXF发布WebService版本:SpringMVC 4.1.6,CXF 3.1.0项目管理:apache-maven-3.3.3 pom.xml <project x ...

  4. TCP和Http的区别!(转) 真心有帮助!!!

    一.From:http://thisliy.javaeye.com/blog/710122 http://wenku.baidu.com/view/14a30d0102020740be1e9b84.h ...

  5. IOS-视频

    一.简介 iOS提供了MPMoviePlayerController.MPMoviePlayerViewController两个类,可以用来轻松播放视频和网络流媒体\网络音频 提示:网络音频同样使用此 ...

  6. 条款20:在传递对象的时候尽量用reference-to-constent来代替,pass-by-value

    注意一下,c++的底层编译器而言,引用类型往往都是由指针来实现出来的,所以pass-by-reference实际意义上往往是传递了一个指针,这对于c++的内置类型来说往往传递一个reference更加 ...

  7. 软工作业-wc(Python实现)

    GitHub地址:GitHub PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划  30  40 · Esti ...

  8. 集合类Collection Map

    数组与集合的区别:数组虽然也可以存储对象,但长度是固定的:集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象. 集合特点:1.用于存储对象:  2.长度可变: 3.可存储不同对象: 一. ...

  9. Python基础学习(第6天)

    1.zip函数 1)zip函数在只有一个参数时运作的方式. x = [1, 2, 3] x = zip(x) print x输出:[(1,), (2,), (3,)] 2)zip函数在没有参数时运作的 ...

  10. 纯css实现Magicline Navigation(下划线动画导航菜单)

    看别人网站的时候,看到一种导航菜单的动画,觉得很有意思,就仔细研究起来. 目前见过的动画有三种:水平下划线动画导航.水平背景动画导航.垂直动画导航,他们实现思路都是一样的,都是依赖 css3的同级通用 ...