我简化了这段代码,但发现它的工作方式与旧版本的php不同。
$data = '1';
if(isset($data['yes'])){
die('yes');
} else {
die('no');
}
使用windows php 5.4版和linux 5.3 进行测试
如果我更改$data = 1;
,那么两者的工作方式相同。查看手动字符串偏移已经更改,所以这可能已经解决了问题。
所以问题是如何最好地构建在旧版本上工作的代码?
从更快的性能角度来看:
if(is_array($data) && isset($data['yes'])){
if(array_key_exists('yes', $data)){
这是的最佳方式
if (is_array($data) && isset($data['yes']))
{
}
如果在不检查$data
是否为数组的情况下执行array_key_exists
,则会出现错误,因为array_key_exists
函数的第二个参数必须始终为array
类型
http://php.net/manual/en/function.array-key-exists.php
第二个参数或array_key_exists必须是一个数组,所以第一个选项是最好的。
if(is_array($data) && isset($data['yes'])){}