首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用JSON输出处理PHP

如何用JSON输出处理PHP
EN

Stack Overflow用户
提问于 2016-01-21 13:34:42
回答 3查看 48关注 0票数 0

希望有人能帮我找出下面的问题。

我执行以下查询:

代码语言:javascript
复制
$key = "privatehashere";
$query = file_get_contents("https://privateurlhere/?key_id=" . $key . "&paramshere");

根据官方文档,我知道输出是一个JSON,它是编码的。因此,我将其解码并转换为PHP数组:

代码语言:javascript
复制
$result = json_decode($query, true);

此时,当我使用<pre>标记和print_r函数显示输出时,我得到:

代码语言:javascript
复制
Array
(
    [status] => ok
    [data] => Array
        (
            [grp] => Array
                (
                    [0] => Array
                        (
                            [number] => 24384
                            [desc] => ENTITY-2
                        )

                    [1] => Array
                        (
                            [number] => 46590
                            [desc] => ENTITY-1
                        )

                )

        )

)

我需要的是将结束值保存到变量中,这样我就可以进一步处理它们。因此,理想的结果应该是:

代码语言:javascript
复制
$number_0 = "24384"
$desc_0 = "ENTITY-2"
$number_1 = "46590"
$desc_1 = "ENTITY-1"

谢谢你的建议/暗示。

EN

回答 3

Stack Overflow用户

发布于 2016-01-21 13:38:26

试一试

代码语言:javascript
复制
foreach($result['data']['grp'] as $item)
{
    echo 'Number '.$item['number'];
    echo '<br/>desc '.$item['desc'];
}

您还可以将它们直接存储到变量中。

代码语言:javascript
复制
$number_0 = $result['data']['grp'][0]['number'];
$desc_0 = $result['data']['grp'][0]['desc'];
$number_1 = $result['data']['grp'][1]['number'];
$desc_1 = $result['data']['grp'][1]['desc'];

注意事项:在PHP中,不能用数字开始变量名。就像你在这里做的一样,$0_number

票数 2
EN

Stack Overflow用户

发布于 2016-01-21 13:43:13

我并不是说这种方法是一种很好的实践,而是对你的问题的直接回答:

代码语言:javascript
复制
$number_0 = $result['data']['grp'][0]['number'];
$desc_0 = $result['data']['grp'][0]['desc'];
$number_1 = $result['data']['grp'][1]['number'];
$desc_1 = $result['data']['grp'][1]['desc'];

如果要动态分配数组中的变量,可以这样做:

代码语言:javascript
复制
foreach( $result['data']['grp'] as $k => $v )
{
    ${'number_'.$k} = $v['number'];
    ${'desc_'.$k} = $v['desc'];
}
票数 2
EN

Stack Overflow用户

发布于 2016-01-21 13:49:55

看来你找回了你的数组。现在形成你所需要的变量。不能使用数值初始化变量。相反,我们形成了这样的$subKey_mainKey,例如。$number_0;

代码语言:javascript
复制
$getDetails[0]  = array("number"=>24384, "desc"=>"ENTITY-2");
$getDetails[1]  = array("number"=>46590, "desc"=>"ENTITY-1");
foreach($getDetails as $indKey=>$indArray) {
    foreach($indArray as $indNKey=>$indNVal) {
        $createVar  = $indNKey."_".$indKey;
        $$createVar = $indNVal;
    }
}
echo $number_0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34925312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档