我一整天都在这里查看帖子,但无法弄清楚我做错了什么。 (我是php和json的新手)
这是我的代码。
$json = '{"id":1234,"img":"1.jpg"}';
$data = json_decode($json, true);
echo $data["img"];
但当json回应是这个
$json = '{"demo1":[{"id":1234,"img":"1.jpg"}],"userId":1}';
对我来说,这对我来说更难。然后img是demo1的孩子?如何获得它?
THX。 :)
答案 0 :(得分:2)
当你是PHP新手时,我将解释如何找出所需数组值的数组。在PHP中,有许多用于调试的函数 - print_r()
和var_dump()
是其中两个。 print_r()
为我们提供了所提供数组的人类可读输出,var_dump()
为我们提供了结构化输出以及变量类型和值。
在这种情况下,print_r()
就足够了:
$json = '{"demo1":[{"id":1234,"img":"1.jpg"}],"userId":1}';
$data = json_decode($json, true);
// wrap the output in <pre> tags to get a prettier output
echo '<pre>';
print_r($data);
echo '</pre>';
这将产生以下输出:
Array
(
[demo1] => Array
(
[0] => Array
(
[id] => 1234
[img] => 1.jpg
)
)
[userId] => 1
)
从那里,你应该很容易弄清楚如何访问所需的vaule。
$data['demo1'][0]['img'];
为了便于使用,您可以创建一个辅助函数来简化此过程。每当您想要查看数组的内容时,只需调用dump_array($array);
即可完成。不再需要使用<pre>
代码或print_r()
。
功能代码:
function dump_array($array) {
echo '<pre>' . print_r($array, TRUE) . '</pre>';
}
用法示例:
$arr = ['foo' => range('a','i'), 'bar' => range(1,9)];
dump_array($arr);
答案 1 :(得分:1)
:
echo $data->demo[0]->img;
基本上,JSON中的{
会导致->
(它是一个对象)。
而[
到[]
,它就是一个数组。