如何使用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 . "¶mshere"); 根据官方文档,我知道输出是一个JSON,它是经过编码的。所以我将其解码并转换为PHP数组: $result = json_decode($query, true); 此时,当我用 Array ( [status]
$key = "privatehashere";
$query = file_get_contents("https://privateurlhere/?key_id=" . $key . "¶mshere");
根据官方文档,我知道输出是一个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初学者,我没有考虑过这个问题。@JayBlanchardPHP解析错误:语法错误,意外的“0”(t_LNUMBER),期望变量(t_variable)或者“$”
,一个php变量不能以数字anks开头。我想我想速度太快了一点。更新它。@JayBlanchard正如我在回答中提到的,我认为这不是最佳做法。我只是想尽可能接近地回答OP的问题。从数组中获取数据的方法很多,存储数据的方法甚至更多已检索数据。不过,感谢您的建议。@JayBlanchardPHP分析错误:语法错误,意外的“0”(T\u LNUMBER),应为变量(T\u variable)或者“$”
,一个php变量不能以数字anks开头。我想我想速度太快了一点。更新它。@JayBlanchard正如我在回答中提到的,我认为这不是最佳做法。我只是想尽可能接近地回答OP的问题。从数组中获取数据的方法很多,存储数据的方法甚至更多Trived data。不过,感谢您的建议。这不完全是我想要的,但非常感谢变量名。正如我前面提到的,我是PHP初学者,没有考虑过这一点。根据我的理解,我回答得很好。因此,如果您向我介绍更多关于您的要求,我将为您提供best解决方案。谢谢和干杯。这不完全是我想要的,但非常感谢变量名。正如我前面提到的,我是PHP初学者,我没有考虑过这一点。根据我的理解,我回答了我的最佳答案。因此,如果您向我介绍更多关于您的要求,这将有助于我为您提供最佳解决方案。谢谢&干杯。