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(变量))

最新文章

  1. 20145205《Java程序设计》课程总结
  2. 【读书笔记】.Net并行编程高级教程(二)-- 任务并行
  3. 使用替换shader渲染
  4. scala的传名参数
  5. 移动端 js touch事件
  6. (转)《深入理解java虚拟机》学习笔记2——Java内存溢出实例
  7. UITableViewCell 高度计算从混沌初始到天地交泰
  8. SWFUpload 中文乱码问题
  9. Win7系统Matlab2013a安装.m文件不自动关联到MATLAB.exe解决方法
  10. poj 1556 The Doors(线段相交,最短路)
  11. ActiveMQ消息队列介绍(转)
  12. Winform: use the WebBrowser to display XML with xslt, xml, xslt 转 html 字符串
  13. 尽量不用char*作为hash_map的key
  14. c#统计代码行数
  15. Java实现大数加法运算的几种方法
  16. 阿里云OSS 获取目录下所有文件
  17. Selenium之动作链(ActionChains)
  18. elasticsearch数据过期删除处理
  19. 让java从Mysql返回多个ResultSet
  20. sql server数据库备份单个表的结构和数据生成脚本

热门文章

  1. PHP基本连接数据库
  2. 2、一、Introduction(入门):1、Application Fundamentals(应用程序基础)
  3. 创建Maven创建src/main/java提示反复
  4. graphicsmagick常用命令
  5. ajax访问WebService跨域问题
  6. 【Android】amr文件时长
  7. 【应用安全】微软的安全开发生命周期(SDL)
  8. iOS开发--时间戳问题
  9. 《MySQL》一次MySQL慢查询导致的故障
  10. numpy基本方法