[英]Php json decode with child
我整天都在浏览这些帖子,但无法弄清楚我在做什么错。 (我是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的孩子吗? 如何获得?
谢谢。 :)
当您不熟悉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
)
从那里,您应该很容易找出如何访问所需的值。
$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);
解码后:
echo $data->demo[0]->img;
基本上,JSON中的{
会导致->
(这是一个对象)。 和[
到[]
,它是一个数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.