关于 PHP 中的 isset 和 array_key_exists 的问题

一直以来我都在想既然有 isset 用来判断数组中的指定的键是否存在,为什么还要有 array_key_exists 的存在,因为 isset 不仅更方便而且性能更好,直到今天在程序出现一个诡异的问题,最后查出无论如何 isset 都判断不出一个明显已经存在于数组中的键的问题时才仔细看了一下文档。

原来 isset 对于数组中指定的索引有值的情况下,如果值是 NULL 那么也会返回 FALSE(官方文档),而不是仅仅判断是否有没有这个键,所以理论上来说 isset 仅仅是用来判断键存在且有值(一般情况下 NULL 都代表什么都没有),那么 isset 在很严格的情况下跟 empty 就十分类似而变的不可靠了。

<?php
$arr = array('a'=>'Hello World', 'b'=>null, 'c'=>0);
isset($arr['a']); //TRUE

isset($arr['b']); //FALSE
!empty($arr['b']); //FALSE
array_key_exists('b', $arr); //TRUE

isset($arr['c']); //TRUE
!empty($arr['c']); //FALSE
array_key_exists('c', $arr); //TRUE

所以如果你需要判断指定的键名是否存在于某个数组中,而不管它的值是什么(哪怕是NULL),那么就需使用 array_key_exists,其它多数情况下还是推荐 isset,毕竟性能会更好。

SpaceX创造历史:完成人类首次太空火箭软着陆

据外媒报道,太空飞行的新时代伴随着SpaceX首个轨道太空火箭着陆的成功正式来开帷幕。美国东部时间12月21日晚上8点39分,Falocon 9在将11颗通信卫星送入近地轨道后顺利在佛罗里达州卡纳维尔角空军基地完成了一次可控、稳定的着陆。该火箭于当晚8:29从第40号空间发射综合体点火升空,风速为10英里/小时(16  km/h)。10分钟后,猎鹰9号火箭的一级顺利着陆。

猎鹰9号共携带了19颗通信卫星。

阅读全部内容 >>

Linux 终结者版本(4.1.15)内核发布

如图

longterm: 4.1.15 2015-12-15

[tar.xz]  [pgp]  [patch]  [inc. patch]  [view diff]  [browse]  [changelog]

PHP 7.0.0 正式发布

在 PHP 5 出现了近十年之后,PHP 7 于与今日终于正式发布,PHP 7.0.0 包含最新版本的 Zend Engine,包括以下特性:

  • 提升性能:PHP 7 速度是 PHP 5.6 的两倍
  • 显著降低内存使用
  • 抽象语法树
  • 支持 64 位
  • 许多重大错误可以进行异常处理
  • 移除了旧的和不支持的 SAPIs 和扩展
  • 安全的随机数生成器
  • null 合并操作符(??)
  • 结合比较运算符 (<=>)
  • 标量类型声明
  • 匿名类

下载:

详细改进请看更新日志

PHP7 语言细节的详细变化参考
PHP7 的实现细节参考
PHP7 中国核心开发者成员“鸟哥”写在发布之际的一些话

Adobe宣布Flash Professional更名为Animate CC 并且支持HTML5

Adobe公司刚刚宣布将Flash Builder更名为Adobe Animate CC,加入对HTML5的支持,帮助开发人员创建更多Flash网站,广告和动画电影。经过20多年发展,Adobe Flash Professional应用程序现在开始迈向HTML 5新时代。几年前,Adobe将大部分Flash事业部员工转移到新的部门来开发HTML5,CSS3和SVG等等。

阅读全部内容 >>