我现在花了很多时间来分析不同服务器上的阵列。
我的小代码:
$rules = array(
'image' => 'is_png'
);
产生不同的输出:
Current PHP version: 7.2.0 1234 found. 1234 found.
Current PHP version: 5.6.8 1234 found. 1234 not found.
那为什么是
echo "Current PHP version: " . phpversion() . "\r\n";
$return = '{"status":"ok","message":"","code":"200","data":{"1234":{"sid":1,"name":"foo"},"4321":{"sid":2,"name":"bar"}}}';
$nr = "1234";
$json_data = json_decode($return, true);
$data = $json_data['data'];
if(isset($data[$nr])){
echo "$nr found.\r\n";
}else{
echo "$nr not found.\r\n";
}
$json_data = json_decode($return);
$data = (array) $json_data->data;
if(isset($data[$nr])){
echo "$nr found.\r\n";
}else{
echo "$nr not found.\r\n";
}
与
不同$json_data = json_decode($return, true);
$data = $json_data['data'];
在具有PHP 5.6的服务器上
两者上的都是$ data一个数组,但是在PHP 5.6上,isset不起作用 正确地放置在阵列上。