json_encode()与json_decode()特殊情况汇总
json_encode()与json_decode()是php处理json数据用的,针对一些特殊情况,他的表现可能会出乎意料,总结如下:
json_encode()
// encode字符串
$str = 'aaa';
var_dump(json_encode($str));
// string(5) ""aaa""
// 注意这里会给字符串两侧加上双引号
$bol = true;
var_dump(json_encode($bol));
// string(4) "true"
$nul = null;
var_dump(json_encode($nul));
// string(4) "null"
json_decode()
$str = "aaa";
var_dump(json_decode($str));
// NULL
$str = '"aaa"';
var_dump(json_decode($str));
// string(3) "aaa"
$str = "\"aaa\"";
var_dump(json_decode($str));
// string(3) "aaa"
$str = "'aaa'";
var_dump(json_decode($str));
// NULL
$bol = 'true';
var_dump(json_decode($bol));
// bool(true)
$bol = 'null';
var_dump(json_decode($bol));
// NULL
其实上面有一部分json_decode()的使用方法会得到Syntax error错误的, 如下:
$bol = 'aaa';
var_dump(json_decode($bol));
$str = "'aaa'";
var_dump(json_decode($str));
$bol = '';
var_dump(json_decode($bol));
// 尤其注意这里,如果想得到bool类型和null类型,必须用小写
$bol = 'True';
var_dump(json_decode($bol));
$bol = 'Null';
var_dump(json_decode($bol));
echo json_last_error_msg(),PHP_EOL;
实验版本:PHP 7.2.4
(完)
- 本文作者:吴泽辉
- 本文链接:https://mutex.top/posts/14ffe0f6/
- 发表日期:2018年6月14日
- 版权声明:本文章为原创,采用《知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议》进行许可