为什么没有assoc的json_decode在PHP 5.6和PHP 7.2上工作不同

时间:2018-07-19 09:52:04

标签: php json isset

我现在花了很多时间来分析不同服务器上的阵列。

我的小代码:

$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不起作用 正确地放置在阵列上。

0 个答案:

没有答案