PHP中检测数组中某键是否存在的方法

2014-10-23 4,075 4 技术 大超超。

(截图中查询语句的写法是不规范的,至少有一条规范是关键词大写)

自建PHP框架里,有对本地配置$conf和数据库配置综合使用的情况,提供统一函数接口获取配置,顺序是:

先检查本地配置中全局配置变量$conf的某键是否存在,如果存在,就直接返回配置值;

如果本地变量里没有,就去数据库配置获取最新配置,并写入本地配置全局变量(内存中,供本次运行时后续调用),这样就能避免数据库重复查询。

然而在实际应用中发现:

当本地配置和数据库配置的值都不存在时,数据库值返回NULL,调试发现也写入到全局变量$conf里了,值为NULL,但是真实查询语句会重复查多次。

检查获取配置的接口,并查阅文档发现:

以前认为的使用isset($conf['key'])可以作为“检测数组中某键是否存在的方法”是错误的,这也是个编码安全隐患。

正确的方法是:

使用PHP内置函数array_key_exists

官方文档说到:

isset检查的变量值为NULL时,返回FALSE


文章同步在微信订阅号,欢迎关注:

 



声明: 本文由大超超。原创编译,转载请保留链接: http://www.thinkful.cn/archives/554.html