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内存泄露的几种情况
想解决内存泄露问题,必须知道什么是内存泄露,什么情况下出现内存泄露,才能在遇到问题时,逐个排除.这里只讨论那些不经意间的内存泄露. 一.什么是内存泄露 内存泄露是指一块被分配的内存既不能使用,又不能回 ...
随机推荐
- python之文件目录和路径
1.路径中不要出现中文,否则有极大可能报错 2.反斜杠问题 举例说明: 我们从Windows复制的文件路径是G:\beifen\Tea. 可以看到,路径用的是反斜杠:\. 由于反斜杠\在python里 ...
- SVN服务器多个项目的权限分组管理
1.创建两个代码仓库 cd /home/svn svnadmin create project1 svnadmin create project2 2. 复制 authz passwd 两文件到SV ...
- pytesseract 报windows err no2的错误
需要把源安装文件pytesseract.py的修改为,tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe' 原始是t ...
- @ControllerAdvice -- 处理异常示例
Class : SessionInterceptor package com.estate.web.filter; import javax.annotation.Resource; import j ...
- Java md5加密 控制台传入与web传入参数 结果不匹配 || 相同字符串加密结果不同,如何保证JAVA MD5加密结果在不同的环境下都相同
开发中遇到md5加密不一致问题,排除了上下文编码,加密内容问题. 爬了各类资料,最终找到了原因. /** 对字符串进行MD5加密 */ private static String encodeByMD ...
- SpringBoot(一)-- 知识点介绍
一.简介 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置.简单来说,它提供了一堆依赖打包,并 ...
- linux共享内存的查看与删除
在使用共享内存的程序异常退出时,由于没有释放掉共享内存,在调试时会出现错误.您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法. 预备知识 L ...
- zabbix的源码安装
前提:安装好lnmp环境,参考: 搭建LNMP环境 下载软件包 1. 下载并解压安装包 cd /usr/local/src wget https://ncu.dl.sourceforge.net/ ...
- Lua 迭代器与closure
所谓“迭代器”就是一种可以遍历(iterate over)一种极和中所有元素的机制.在Lua中,通常将迭代其表示为函数.每调用一次函数,即返回集合中的“下一个”元素.每个迭代器都需要在每次成功调用之间 ...
- C#实现HTTP请求文件下载,GET、POST请求的数据流接收
做项目的时候由于插件Phaser请求audio的时候,不允许跨域,具体提示====> 已拦截跨源请求:同源策略禁止读取位于 http://ttyouni.com/1.mp3 的远程资源.(原因: ...