Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JSON输出处理PHP数组_Php_Arrays_Json_Loops_Variables - Fatal编程技术网

如何使用JSON输出处理PHP数组

如何使用JSON输出处理PHP数组,php,arrays,json,loops,variables,Php,Arrays,Json,Loops,Variables,希望有人能帮我解决以下问题 我执行以下查询: $key = "privatehashere"; $query = file_get_contents("https://privateurlhere/?key_id=" . $key . "&paramshere"); 根据官方文档,我知道输出是一个JSON,它是经过编码的。所以我将其解码并转换为PHP数组: $result = json_decode($query, true); 此时,当我用 Array ( [status]

希望有人能帮我解决以下问题

我执行以下查询:

$key = "privatehashere";
$query = file_get_contents("https://privateurlhere/?key_id=" . $key . "&paramshere");
根据官方文档,我知道输出是一个JSON,它是经过编码的。所以我将其解码并转换为PHP数组:

$result = json_decode($query, true);
此时,当我用

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

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

                )

        )

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

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\u号码

试试看

$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
中,变量名不能以数字开头。就像你在这里做的那样,我并不是说这种方法是一种好的做法,但它是对你问题的直接回答:

foreach( $result['data']['grp'] as $k => $v )
{
    ${'number_'.$k} = $v['number'];
    ${'desc_'.$k} = $v['desc'];
}
如果要从数组中动态分配变量,可以这样做:

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

我并不是说这种方法是一种好的做法,但它直接回答了您的问题:

foreach( $result['data']['grp'] as $k => $v )
{
    ${'number_'.$k} = $v['number'];
    ${'desc_'.$k} = $v['desc'];
}
如果要从数组中动态分配变量,可以这样做:

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

好像你找回了你的数组。 现在,形成所需的变量。 不能使用数值启动变量。相反,我们像这样形成它
$subKey\u main key
例如
$number\u 0


好像你找回了你的数组。 现在,形成所需的变量。 不能使用数值启动变量。相反,我们像这样形成它
$subKey\u main key
例如
$number\u 0



你能分享一下你尝试过的吗?这些变量很难被称为“理想”变量为什么要把它们放在标量变量中?它们在一个数组中,将它们留在那里,并通过寻址数组来使用这些值,即
if($result['status']='ok')){
如果你给变量
$result
起一个更有意义的名字,那将是一个自我记录的过程!@GeraldSchneider我的错。其他人已经告诉我他们有什么问题。不管怎样,下次尽量说得更具体些;-)我说你应该在哪里修改任何东西。一旦你做了
json\u decode()
你拥有一个完全属于你的数组。去处理、去爱、去珍惜、去修改或不修改。将它全部复制到新的标量变量中只会使你的内存需求翻倍,并增加你的运行时间。如果你更喜欢使用对象,那么将
,true
json\u decode()中去掉
我敢打赌你会得到一个很好的对象来处理。你能分享你尝试过的吗?这些变量很难被称为“理想”为什么要把它们放在标量变量中?它们在一个数组中,把它们放在那里,通过寻址数组来使用值,即
如果($result['status']='ok')){
如果你给变量
$result
起一个更有意义的名字,那将是一个自我记录的过程!@GeraldSchneider我的错。其他人已经告诉我他们有什么问题。不管怎样,下次尽量说得更具体些;-)我说你应该在哪里修改任何东西。一旦你做了
json\u decode()
你拥有一个完全属于你的数组。去处理、去爱、去珍惜、去修改或不修改。将它全部复制到新的标量变量中只会使你的内存需求翻倍,并增加你的运行时间。如果你更喜欢使用对象,那么将
,true
json\u decode()中去掉
我敢打赌你会得到一个很好的对象来处理为什么OP“尝试这个”?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的SO访问者。感谢关于变量名的注释。我是PHP初学者,我没有想到这一点。为什么OP“尝试这个”一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了以后的访客。感谢关于变量名的注释。我是PHP初学者,我没有考虑过这个问题。@JayBlanchard
PHP解析错误:语法错误,意外的“0”(t_LNUMBER),期望变量(t_variable)或者“$”
,一个php变量不能以数字anks开头。我想我想速度太快了一点。更新它。@JayBlanchard正如我在回答中提到的,我认为这不是最佳做法。我只是想尽可能接近地回答OP的问题。从数组中获取数据的方法很多,存储数据的方法甚至更多已检索数据。不过,感谢您的建议。@JayBlanchard
PHP分析错误:语法错误,意外的“0”(T\u LNUMBER),应为变量(T\u variable)或者“$”
,一个php变量不能以数字anks开头。我想我想速度太快了一点。更新它。@JayBlanchard正如我在回答中提到的,我认为这不是最佳做法。我只是想尽可能接近地回答OP的问题。从数组中获取数据的方法很多,存储数据的方法甚至更多Trived data。不过,感谢您的建议。这不完全是我想要的,但非常感谢变量名。正如我前面提到的,我是PHP初学者,没有考虑过这一点。根据我的理解,我回答得很好。因此,如果您向我介绍更多关于您的要求,我将为您提供best解决方案。谢谢和干杯。这不完全是我想要的,但非常感谢变量名。正如我前面提到的,我是PHP初学者,我没有考虑过这一点。根据我的理解,我回答了我的最佳答案。因此,如果您向我介绍更多关于您的要求,这将有助于我为您提供最佳解决方案。谢谢&干杯。