繁体   English   中英

PHP JSON与孩子一起解码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM