【问题标题】:Parse JSON data from multiple options从多个选项解析 JSON 数据
【发布时间】:2017-08-12 13:19:56
【问题描述】:

我正在尝试从此页面解析格式为 [{code:SE rate:1.294},{code:UK rate:2.353}] 的 JSON 数据: http://www.mycurrency.net/service/rates

我已经实现了一个 IP 阅读器,它可以检测用户在 2 个字母国家代码中的位置。我想用'code'从那个链接中提取正确的数据并返回值'rate'。我在想我可能需要做一个 foreach 循环来遍历所有国家/地区?

【问题讨论】:

  • 另外,您还没有发布任何包含问题的代码,因此不清楚您在问什么
  • 顺便说一下,http://www.mycurrency.net/service/rates 的数据不准确,它显示我的国家印度尼西亚为“东帝汶”,但货币是 IDR(印尼盾),而东帝汶/TP 货币是美元
  • @RajdeepPaul 老实说,我不知道从哪里开始,这对我来说是全新的。
  • @MuhammadIbnuh 好地方,这是我能找到的最好的免费资源数据,也许我可以在我的脚本中转换它

标签: php json parsing


【解决方案1】:

这是我的代码,我希望这就是你要找的。​​p>

首先我创建一个新数组$output 以便于搜索

$string = file_get_contents("http://www.mycurrency.net/service/rates");
$json = json_decode($string, true);

foreach ($json as $key => $data) {
    $output[$key]['code'] = $data['code'];
    $output[$key]['rate'] = $data['rate'];
}

之后,我们使用函数在数组中搜索值并返回键。我从here得到它

function searchForRate($countryCode, $array) {
   foreach ($array as $key => $val) {
       if ($val['code'] === $countryCode) {
           return $key;
       }
   }
   return null;
}

然后我以第一个参数为国家代码运行该函数以获取特定国家代码的键。

$find = searchForRate("BT", $output);

然后在$find 变量中键入$output 数组中的费率

echo 'RATE = '.$output[$find]['rate'];

这是完整的代码

<?php

$string = file_get_contents("http://www.mycurrency.net/service/rates");
$json = json_decode($string, true);

foreach ($json as $key => $data) {
    $output[$key]['code'] = $data['code'];
    $output[$key]['rate'] = $data['rate'];
}

function searchForRate($countryCode, $array) {
   foreach ($array as $key => $val) {
       if ($val['code'] === $countryCode) {
           return $key;
       }
   }
   return null;
}

$find = searchForRate("BT", $output);
echo 'RATE = '.$output[$find]['rate'];

示例输出:

RATE = 64.13

【讨论】:

  • 感谢这项工作,我不太明白第一部分是否将数组减少为仅包含代码和速率?
  • 性能我不知道,只是个人喜好。您可以跳过该步骤并继续搜索$json
猜你喜欢
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 2015-05-29
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多