php - 在foreach中访问带有空格的JSON键
问题描述
我正在尝试访问下面示例 JSON 中的一些键值。
{
"Realtime Currency Exchange Rate":
{
"1. From_Currency Code": "EUR",
"2. From_Currency Name": "Euro",
"3. To_Currency Code": "USD",
"4. To_Currency Name": "United States Dollar",
"5. Exchange Rate": "1.14122552",
"6. Last Refreshed": "2018-08-14 05:07:51",
"7. Time Zone": "UTC"
},
{
"1. From_Currency Code": "USD",
"2. From_Currency Name": "United States Dollar",
"3. To_Currency Code": "EUR",
"4. To_Currency Name": "Euro",
"5. Exchange Rate": "0.87692400",
"6. Last Refreshed": "2018-08-14 05:09:17",
"7. Time Zone": "UTC"
}
}
问题是键有空格。
我的FOREACH看起来像这样
$json = json_decode($data);
$json_response = array();
foreach ($json->Realtime Currency Exchange Rate as $row) {
$row_array = array();
$row_array['From'] = $row->1. From_Currency Code;
$row_array['To'] = $row->3. To_Currency Code;
$row_array['value'] = $row->5. Exchange Rate;
array_push($json_response, $row_array);
}
我曾尝试使用 foreach 语句中的密钥['Realtime Currency Exchange Rate'], [Realtime Currency Exchange Rate], [Realtime.Currency.Exchange.Rate]
以及我可以在此处找到的任何其他内容,但它们都不起作用。
编辑 也尝试过这样但它没有用
foreach ($json->{'Realtime Currency Exchange Rate'} as $row) {
$row_array = array();
$row_array['From'] = $row->{'1. From_Currency Code'};
array_push($json_response, $row_array); //push the values in the array
}
但是这个解决方案有效
foreach ($json as $row) {
$row_array = array();
$row_array['From'] = $row->{'1. From_Currency Code'};
array_push($json_response, $row_array); //push the values in the array
}
知道如何访问密钥及其值吗?谢谢
解决方案
你可以这样做
$json->{'Realtime Currency Exchange Rate'}
希望有帮助
更新:
$data = array(
"Realtime Currency Exchange Rate" => array(
0 => array(
"1. From_Currency Code" => "EUR",
"2. From_Currency Name" => "Euro",
"3. To_Currency Code" => "USD",
"4. To_Currency Name"=> "United States Dollar",
"5. Exchange Rate" => "1.14122552",
"6. Last Refreshed" => "2018-08-14 05:07:51",
"7. Time Zone" => "UTC"
),
1 => array(
"1. From_Currency Code" => "USD",
"2. From_Currency Name" => "United States Dollar",
"3. To_Currency Code" => "EUR",
"4. To_Currency Name" => "Euro",
"5. Exchange Rate" => "0.87692400",
"6. Last Refreshed" => "2018-08-14 05:09:17",
"7. Time Zone" => "UTC"
)
)
);
$data = json_encode($data);
$json = json_decode($data);
$json_response = array();
foreach ($json->{'Realtime Currency Exchange Rate'} as $row) {
echo "<pre>";
print_r($row);
echo "</pre>";
}
格式化的 JSON 字符串将如下所示
{
"Realtime Currency Exchange Rate": [{
"1. From_Currency Code": "EUR",
"2. From_Currency Name": "Euro",
"3. To_Currency Code": "USD",
"4. To_Currency Name": "United States Dollar",
"5. Exchange Rate": "1.14122552",
"6. Last Refreshed": "2018-08-14 05:07:51",
"7. Time Zone": "UTC"
}, {
"1. From_Currency Code": "USD",
"2. From_Currency Name": "United States Dollar",
"3. To_Currency Code": "EUR",
"4. To_Currency Name": "Euro",
"5. Exchange Rate": "0.87692400",
"6. Last Refreshed": "2018-08-14 05:09:17",
"7. Time Zone": "UTC"
}]
}
推荐阅读
- javascript - 有没有一种简单的方法可以在 React Native 中创建事件和侦听器
- c - 如何创建一个函数,如果一个数字是素数则返回 1,如果它不是素数则返回 0 在 C 编程中
- angular - 使用量角器触发剑道网格列调整大小
- r - 大于 0.5 时将所有变量替换为 true 小于 0.5 时替换为 false
- jquery - 查找提交表单的输入值
- neo4j - Neo4j Coactor 网络以及网络中的 coactor 之间的电影数量
- c - 如何使用 C 中的 while 循环和数组递归地计算字符串中的元音?
- gradle - 在 gradle ssh 插件中参考 spring-boot 组装的 jar
- ios - retrievePeripheralsWithIdentifiers:此函数将检索哪些设备?
- php - Ajax POST 数据,如何拆分数据?