php json decode 遍历,PHP JSON 处理:JSON 解码 JSON_decode

这篇博客详细介绍了PHP的json_decode函数,用于将JSON字符串转换为PHP变量。通过实例展示了如何将JSON数据转化为数组或对象,并演示了处理多维数组和处理错误的方法。此外,还提到了json_last_error和json_last_error_msg函数在处理解码错误时的作用。
摘要由CSDN通过智能技术生成

PHP 的 json_decode 函数接受一个 JSON 编码的字符串并且把它转换为 PHP 变量。JSON 数据通常用于表示 JavaScript 数组或对象字面量。反之, json_decode 将 JSON 字符串转化为 PHP 数组或对象。以下将分别以数组和对象为例进行演示

$json = '["apple","orange","banana","strawberry"]';

$ar = json_decode($json);

// 访问数组的第一个元素

echo $ar[0]; // apple

通过 json_decode 方法, 对象字面量将默认转化为标准的 PHP 对象

$json = '{

"title": "JavaScript: The Definitive Guide",

"author": "David Flanagan",

"edition": 6

}';

$book = json_decode($json);

// access title of $book object

echo $book->title; // JavaScript: The Definitive Guide

将 JSON 字符串转换为 PHP 数组

json_decode 函数提供了可选的第二个参数,用于将对象转换为关联数组。下面使用上一个示例中的对象,并将 true 作为第二个参数传入函数。$book现在得到的结果便是一个数组,可以使用数组语法访问它的title元素和其他元素:

// 和上面例子中一样的$json

// 通过true参数将 JSON 字符串转换为 PHP 数组

$book = json_decode($json, true);

// 得到$book 数组的 title

echo $book['title']; // JavaScript: The Definitive Guide

JSON 字符串转换到多维数组

json_decode 函数还可用于转换 JSON 字符串中包含的更复杂的数据结构。以下示例中的 JSON 字符串($json)表示一个对象数组。也就是说,外层是一个数组,数组元素是一个个对象。默认情况下  json_decode 的结果是对象组成的以数字为索引的数组:

$json = '[

{

"title": "Professional JavaScript",

"author": "Nicholas C. Zakas"

},

{

"title": "JavaScript: The Definitive Guide",

"author": "David Flanagan"

},

{

"title": "High Performance JavaScript",

"author": "Nicholas C. Zakas"

}

]';

$books = json_decode($json);

// 取得对象数组的属性

echo $books[1]->title; // JavaScript: The Definitive Guide

如果我们将 true 作为第二个参数传递给 json_decode ,则结果是一个多维数组,外层被数字索引的数组,内层是关联数组:

// 和上面例子中一样的$json

// 通过true参数将 JSON 字符串转换为多维数组

$books = json_decode($json, true);

// 索引(数字/关联的键)多维数组

echo $books[1]['title']; // JavaScript: The Definitive Guide

然后,我们使用数字和关联数组语法的组合来访问多维数组中的你想要的元素。

json_decode错误或意外结果?

如果传递给 json_decode 函数的字符串无法转换,则返回值为null。例如,以下示例说明了我们的 JSON 字符串包含不合法的字符时的结果:

$json = "{

'title': 'JavaScript: The Definitive Guide',

'author': 'David Flanagan',

'edition': 6

}";

$book = json_decode($json);

echo $book->title; // Notice: Trying to get property of non-object...

echo json_last_error(); // 4 (JSON_ERROR_SYNTAX)

echo json_last_error_msg(); // unexpected character

我们尝试访问对象的属性会导致错误。PHP中的 json_last_error 和 json_last_error_msg 函数提供了相关的错误信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值