php - 如何使用 php 从多维 json 响应中获取键和值
问题描述
下面是我用于从 REST API 获取数据以检索状态的代码。结果包含状态代码和状态名称,以将状态代码作为键和状态名称作为值传递到选择选项表单中。我的挑战是,我无法知道使用 json decode 后访问数据的正确方法
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://demo.geminiapp.net/service/Request.svc/api/states",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer yP5lnti7wDChJxwmBYz7dpbgbzGqQRG1dyvAZihesrA=",
"Cache-Control: no-cache",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
$result = json_decode($response,true);
$result['StateCode']['StateName'];
}
?>
Result of json reponse
{"States":[{"StateCode":"9","StateName":"ABUJA"},{"StateCode":"LA","StateName":"LAGOS STATE"},{"StateCode":"OG","StateName":"OGUN STATE"}]
I have tried to read the response using
$result = json_decode($response,true);
$result['StateCode']['StateName'];
but I get the error
Notice: Undefined index: StateCode
解决方案
根据结果
{"States":[{"StateCode":"9","StateName":"ABUJA"},{"StateCode":"LA","StateName":"LAGOS STATE"},{"StateCode":"OG","StateName":"OGUN STATE"}]
在 json_decode() 之后,你的 $result 将是这样的:
[
"States" => [
[
"StateCode" => "9",
"StateName" => "ABUJA",
],
[
"StateCode" => "LA",
"StateName" => "LAGOS STATE",
],
[
"StateCode" => "OG",
"StateName" => "OGUN STATE",
],
]
]
您可以将其简化为删除键“States”并仅保留其值:
$result = $result["States"];
现在您可以迭代 $result 以查看结果,例如:
foreach ($result as $state) {
// do something with your states
echo 'State code: ' . $state['StateCode'] . ' State name: ' . $state['StateName']
}
推荐阅读
- c++ - 是否可以编写一个 CLang 插件来警告使用 RAW 指针?
- c# - ListViewItem 的视图未发布
- python - Flask Restful reqparse add_argument 类型为二进制
- c++ - 为什么 Crypto++ SecByteBlock 下标有效
- java - JavaFX TreeItem.TreeModificationEvent
事件不提供对 (ListChangeListener.Change) 更改成员的访问以获取订购信息 - vue.js - Mixin 中的 VueX
- r - 在延迟微分方程中使用积分函数
- windows - 使用 PySpark 内核时出现 Jupyter Notebook 错误:代码因致命错误而失败:发送 http 请求时出错
- javascript - 此正则表达式与小数点后的 0 不匹配
- jquery - 我使用 Highcharts 创建了一个散点图,但 point.z 值未显示在工具提示中