如何处理PHP数组与JSON输出
希望一些可以帮助我弄清楚以下问题..如何处理PHP数组与JSON输出
我执行以下查询:
$key = "privatehashere";
$query = file_get_contents("https://privateurlhere/?key_id=" . $key . "¶mshere");
根据官方文档,我知道输出是一个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"
感谢您的任何建议/提示。
尝试
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
为什么OP要“试试这个”?一个好的答案***将总是解释所做的事情以及为什么这样做,不仅是为了OP,而且是为了将来SO的访问者。 –
感谢关于变量名称的说明。我是PHP初学者,我没有想到这一点。 –
我并不是说这种方法是很好的做法,但它是一个直接回答你的问题:
$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'];
}
好像你检索你的数组。 现在形成你所需的变量。 您无法使用数字值启动您的变量。相反,我们形成它像这样$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;
这不是我正在寻找的,但非常感谢变量名称。正如我上面提到的,我是PHP初学者,我没有想到这一点。根据我的理解, –
我回答得最好。所以如果您向我简要介绍一下您的要求,我会给您提供最佳解决方案。感谢和欢呼。 – ameenulla0007
你能分享一下你试过的吗? –
这些变量很难称为“理想” –
为什么把它们放在标量变量中?他们在一个数组中留下他们并通过处理数组来使用这些值,例如'if($ result ['status'] =='ok'){'如果给变量'$ result'一个更有意义的名字,它会beome自我记录! – RiggsFolly