json_encode 将数组转为json字符串的坑

2022-10-11 21:20:28 112 0
魁首哥

json_encode 是我们经常用到的一个函数,它可以将数组转为json字符串,考虑下面这种情况

 echo json_encode(['age' => 1]);

echo PHP_EOL;
echo json_encode(['age' => "1"]);  
 {"age":1}
{"age":"1"}  

对于age的值是数字还是数字字符串,对json_encode之后的值是不一样的,通常情况下不会有什么影响,但是如果我们拿json_encode之后的两个值作比较就会出现问题。

json_encode 将数组转为json字符串的坑

那么如何避免这种问题呢,json_encode还为我们提供了第二个参数

更多参数:

这里我们使用

JSON_NUMERIC_CHECK (int) 将所有数字字符串编码成数字(numbers)。

 echo json_encode(['age' => 1], JSON_NUMERIC_CHECK);
echo PHP_EOL;
echo json_encode(['age' => "1"], JSON_NUMERIC_CHECK);  
 
{"age":1}
{"age":1}
  

结果就会一致了,这种在某些特殊情况下会用到,如接口参数校验等,还是需要注意。

收藏
分享
海报
0 条评论
112
上一篇:PHP7中的异常与错误处理 下一篇:PHP 是生还是死?

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码