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(变量))
empty对如下8种情况返回true的更多相关文章
- 探讨read的返回值的三种情况
http://blog.chinaunix.net/uid-23629988-id-3035613.html 今天探讨一个很看似简单的API “read”的返回值问题.read的返回值有哪几个值?每个 ...
- try catch finally 中包含return的几种情况,及返回结果
当当当,兴致勃勃的第二篇博客,散花~ 下面是正题(敲黑板) 第一种情况:在try和catch中有return,finally中没有return,且finally中没有对try或catch中要 retu ...
- springmvc<一>一种资源返回多种形式【ContentNegotiatingViewResolver】
restful服务中一个重要的特性就是一种资源可以有多种表现形式,在springmvc中可以使用ContentNegotiatingViewResolver这个视图解析器来实现这种方式. 描述资源的三 ...
- Tomcat内存溢出的三种情况及解决办法分析
Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种 ...
- LoadRunner 场景运行error的几种情况
一. Error -27727: Step download timeout (120 seconds)has expired when downloading resource(s). Set th ...
- .net webapi 接收 xml 格式数据的三种情况
webapi 接收 xml 的三种方法 前段时间接到一个任务写一个小接口,要接收java端返回过来的短信xml数据. 刚拿到项目,我的第一想法是对方会以什么形式发送xml格式的数据给我呢,设想三种情况 ...
- WPF 的命令的自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因
原文:WPF 的命令的自动刷新时机--当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因 在 WPF 中,你可以使用 Command="{Binding Walt ...
- js中的数据类型隐式转换的三种情况
js的数据类型隐式转换主要分为三种情况: 1. 转换为boolean类型 2. 转换为number类型 3. 转换为string类型 转换为boolean类型 数据在 逻辑判断 和 逻辑运算 之中会隐 ...
- js内存泄露的几种情况
想解决内存泄露问题,必须知道什么是内存泄露,什么情况下出现内存泄露,才能在遇到问题时,逐个排除.这里只讨论那些不经意间的内存泄露. 一.什么是内存泄露 内存泄露是指一块被分配的内存既不能使用,又不能回 ...
随机推荐
- kettle教程二
转载:http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply2.html 1.应用场景 这里简单概括一下几种具体的应用场景, ...
- 源码分析五(HashSet的内部实现)
一:首先来看看Hashset的继承体系 public class HashSet<E> extends AbstractSet<E> implements Set<E&g ...
- vs2012更改默认开发环境
1.在菜单栏里找到“Tools”(工具),选择下面的“Import and Export Settings”(导入和导出设置),如图1所示: 图1 2.弹出如下界面,按提示选择你需要 ...
- 一道简单的把ArrayList中的正负数组分开并求得边界索引的题目
给定一个List,里面存放的一组整数有正数和负数,要求把正数和负数分开,并得到正数和负数分割线索引(不要求排序,不能使用多层循环) 解答方法并不算太复杂,重点注意边界条件和极端条件(全是正或者全是负) ...
- Android Studio 视图解析
AS一共同拥有三种视图.我们来分别分析每一种视图的作用. 一.Project视图.(白色字体的文件夹/文件可不关注) 图片中的链接 Gralde介绍:http://stormzhang.com/dev ...
- SpringBoot------新建一个项目
1.新建一个Maven Project 2.选择项目路劲 3.选择Web App 4.添加项目名称 5.右击“Properties”->“Java Build Path”->“Source ...
- [转]如何配置和使用Tomcat访问日志
配置位置在log下的server.xml,(tomcat容器) <Engine defaultHost="localhost" name="Catalina&quo ...
- ubuntu13.04 搭建 Nginx + PHP + PHP-FPM + Mysql (lnmp) 环境
Nginx 是一个轻量级,以占用系统资源少,运行效率而成为web服务器的后起之秀,国内现在很多大型网站都以使用nginx,包括腾讯.新浪等大型信息网站,还有淘宝网站使用的是nginx二次开发的web服 ...
- MvvmLight学习篇—— Mvvm Light Toolkit for wpf/silverlight系列(导航)
系列一:看的迷迷糊糊的 一.Mvvm Light Toolkit for wpf/silverlight系列之准备工作 二.Mvvm Light Toolkit for wpf/silverlight ...
- ios开发之--UIViewContentMode详解
在开发当中有时会有这样的需求,将从服务器端下载下来的图片添加到imageView 当中展示,但是下载下来的图片尺寸大小不固定,宽高也有可能不成比例 如果直接设置imageView的image属性而不设 ...