empty对如下8种情况返回true

1、strrchr函数

在W3School站点上的注释如下:

strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
如果成失败,否则返回 false。

实际上,这个函数是查找某个字符,而不是查找字符串,应该参考官方文档

代码示例:
$a = ‘abcdef.txt‘; $b = ‘.php‘; echo strrchr($a, $b);上面的代码输出是:.txt

也就是说,如果$b是字符串,只使用第一个字符,后面的其它字符会忽略

注?php提供了strstr函数,为什么不提供strrstr函数呢,虽然自己实现也很简单

2、null和空、0,三个值的比较
在PHP中,== 会先进行类型转换,再进行对比,而===会先比较类型,如果类型不同直接返回不相等,参考如下示例
$a = null; $b = ‘‘; $c = 0; echo ($a == $b)?1:0; // 输出1 echo ($a === $b)?1:0; // 输出0 echo ($a == $c)?1:0; // 输出1 echo ($a === $c)?1:0; // 输出0 echo ($b == $c)?1:0; // 输出1 echo ($b === $c)?1:0; // 输出0对于我这种以前只写js或C#代码的码农,被这3个值忽悠过n次,n大于3 
3、foreach里的引用赋值,参见官方文档
这个引用赋值很好哇,对用C#的我,在C#里要修改foreach的元素,是不可能的,是会出异常滴,php把这个变成了可能,但是:
在官方文档里有一句警告:Warning 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。
我们看一组代码:
$a = [1,2,3]; foreach($a as &$item){ echo $item . ‘,‘; } //unset($item); // 引用赋值后不销毁对象 foreach($a as $item){ echo $item . ‘,‘; }上面的代码的输出如下:
1,2,3,1,2,2 2881064151看最后一个输出的是2,而不是3,就是因为代码里没有销毁$item造成的,原因如下:
第一个循环,把3的引用赋给了$item,第二个循环,把1赋给了$item,因为$item是引用,导致数组的元素3变成了1,明白了吗? 4、isset与empty的联系和区别,isset文档 empty文档
empty对如下8种情况返回true:
null、 空串""、字符串0"0"、空array、布尔值false、数字0、浮点数0.0、类里用var定义但是未赋值 isset 检测变量是否设置,并且不是 NULL,但是对于empty的8种情况,只有null返回false,其它7种情况都返回true

综上所述,除了empty描述的的非null的7种情况,在其它情况下, if(empty(变量)) 等效于 if(!isset(变量))

时间: 2024-08-07 17:01:28

empty对如下8种情况返回true的相关文章

java equals方法判断字符串不相等情况返回true?

如右图. 原文地址:http://blog.51cto.com/13588844/2286062

关于函数返回值的几种情况

1.     如果返回一个基本类型的变量,比如: int a; a = 5; return a; 那么就会a的一个拷贝,即5返回,然后a就被销毁了.尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题. 2.     但是对于非动态分配(new/malloc)得到的指针,像1那么做就会有问题,比如在某个函数内部: int a[] = {1, 2}; return a; 那么也会返回指针a的一个拷贝,我们假定a的地址值为0x002345FC,那么这个0x2345FC是能够成功返回的.当

ARM异常中断返回的几种情况

ARM异常中断返回的几种情况重要基础知识:R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令.一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此 PC总是指向第三条指令.当 ARM 状态时,每条指令为 4 字节长,所以 PC 始终指向该指令地址加 8 字节的地址,即:PC 值=当前程序执行位置+8: 而 ADS 中的 pc,是为了调试看着方便而修改过的,它指向的是正在执行的指令,即“真正 pc-8”! 1.SWI 和和未定义

springmvc<一>一种资源返回多种形式【ContentNegotiatingViewResolver】

restful服务中一个重要的特性就是一种资源可以有多种表现形式,在springmvc中可以使用ContentNegotiatingViewResolver这个视图解析器来实现这种方式. 描述资源的三种形式     一.使用扩展名 http://localhost:8080/test/user.xml   以xml格式呈现 http://localhost:8080/test/user.json  以json格式呈现 http://localhost:8080/test/user     以默认

转:Tomcat内存溢出的三种情况及解决办法分析

Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种情况: 1.OutOfMemoryError: Java heap space 2.OutOfMemoryError: PermGen space 3.OutOfMemoryError: unable to create new native thread. Tomcat内存溢出解决方案 对于前两种

java中基本类型与装箱基本类型“==”比较出现的几种情况

java中基本类型与装箱基本类型"=="比较出现的几种情况 java有一个类型系统有两部分组成,包含基本类型(primitive),例如:int.double等,还有引用类型(reference type),例如:String.List.每个基本类型都有一个对应的引用类型,称为装箱基本类型(boxed promitive).装箱基本类型中对应于int.double的是Integer.Double. Java 1.5发行版本中增加了自动装箱和自动拆箱,自动装箱和自动拆箱就是我们所知道的&

WPF 的命令的自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因

原文:WPF 的命令的自动刷新时机--当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因 在 WPF 中,你可以使用 Command="{Binding WalterlvCommand}" 的方式来让 XAML 中的一个按钮或其他控件绑定一个命令.这样,按钮的可用性会自动根据 WalterlvCommand 当前 CanExecute 的状态来改变.这本是一个非常智能的特性,直到你可能发现你按钮的可用性状态不正确-- 本文介绍默认情况下,WPF 在 UI 上

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return

js内存泄露的几种情况

想解决内存泄露问题,必须知道什么是内存泄露,什么情况下出现内存泄露,才能在遇到问题时,逐个排除.这里只讨论那些不经意间的内存泄露. 一.什么是内存泄露 内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束.在C++中,因为是手动管理内存,内存泄露是经常出现的事情.而现在流行的C#和Java等语言采用了自动垃圾回收方法管理内存,正常使用的情况下几乎不会发生内存泄露.浏览器中也是采用自动垃圾回收方法管理内存,但由于浏览器垃圾回收方法有bug,会产生内存泄露. 二.内存泄露的几种情况