如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

本篇文章中,苏南大叔要和大家分享一个非常常见的php函数json_decode/json_encode的使用方法。大家经常使用这个这个函数,用于把一段字符串,变成一个json对象。但是不知道大家有没有仔细想过这两个函数的更深次的用法呢?本篇文章的姐妹文章是:你所不认识的php函数file_get_contents。https://newsn.net/say/php-file_get_contents.html

json_decode 的第二个参数

json_decode 存在着第二个/第三个/第四个 参数,详情可以参见这里:https://doc.php.sh/zh/function.json-decode.html 。虽然我们经常使用的,仅仅是第一个参数。苏南大叔今天想给大家说说json_decode的第二个参数。先看看下面的例子。

$json = '{"a":1,"b":2,"c":3}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));

我们来看一下输出。

你所不认识的php函数json_decode和json_encode - 001
你所不认识的php函数json_decode和json_encode(图2-1)

json_decode 第二个参数,默认为false,返回的是object。当为true的时候,返回的是array 。

json_encode 的第二个参数

同样,json_encode,也存在着很多个参数。但是苏南大叔只想和大家分享一下,第二个参数中的一个特殊用法。同样,看例子说话。

$a = array("中文","english");
echo "Normal: ",  json_encode($a), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";

这个的输出是:

你所不认识的php函数json_decode和json_encode - 002
你所不认识的php函数json_decode和json_encode(图2-2)

JSON_UNESCAPED_UNICODE,这个参数值对于我们平时调试php,非常有用。使用他的话,中文输出还是中文,而不加它的话,中文汉字就会被编码成,我们不认识的“乱码”。那么处于实际情况考虑,对于大家来说,这第二个参数,都应该恒定是JSON_UNESCAPED_UNICODE ,才更好些。

两个json函数的调试

这两个函数如果数据处理失败的情况,虽然并不常见。但是,碰到的话,我们在屏幕上却看不到任何的错误输出。这两个函数是使用json_last_error() 来获取错误信息的。真个是不是很超乎意料?具体的例子,可以参见这里。https://doc.php.sh/zh/function.json-last-error.html

对于普通的情况上来说,我们只需要对比json_last_error()是不是等于JSON_ERROR_NONE即可。如果为true,就是没有错误拉。否则,就是有错误拉。具体的错误代码,请参见文档说明。

//...
$json_obj = json_decode($content_json, TRUE);
if ($json_obj) {
  //...
} else {
  $ret = json_last_error();
  switch($ret){
     //...
  }
}

总结

php虽然是世界上最好的语言,但是深入了解后,就会觉得它是那么的神奇到不可思议。哈哈哈~~~ 更多php相关文章,请点击这里来支持苏南大叔。https://newsn.net/tag/php/

 【源码】代码片段及相关软件点此获取

 【php】秘籍文章入口,仅传授于有缘之人   php    json

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!