如何使用JSON输出

时间:2016-01-21 13:34:42

标签: php arrays json loops variables

希望有些人可以帮我解决以下问题..

我执行以下查询:

$key = "privatehashere";
$query = file_get_contents("https://privateurlhere/?key_id=" . $key . "&paramshere");

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

$result = json_decode($query, true);

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

Array
(
    [status] => ok
    [data] => Array
        (
            [grp] => Array
                (
                    [0] => Array
                        (
                            [number] => 24384
                            [desc] => ENTITY-2
                        )

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

                )

        )

)

我需要的是将结束值保存到变量中,以便我可以进一步使用它们。所以结果应该是理想的:

$number_0 = "24384"
$desc_0 = "ENTITY-2"
$number_1 = "46590"
$desc_1 = "ENTITY-1"

感谢您提出任何建议/提示。

3 个答案:

答案 0 :(得分:2)

尝试

foreach($result['data']['grp'] as $item)
{
    echo 'Number '.$item['number'];
    echo '<br/>desc '.$item['desc'];
}

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

$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

一样

答案 1 :(得分:2)

我并不是说这种方法很好,但它可以直接回答你的问题:

$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'];

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

foreach( $result['data']['grp'] as $k => $v )
{
    ${'number_'.$k} = $v['number'];
    ${'desc_'.$k} = $v['desc'];
}

答案 2 :(得分:0)

好像你检索了你的数组。 现在形成你所需的变量。 您无法使用数值启动变量。相反,我们形成它像$subKey_mainKey,例如。 $number_0;

$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;