我有两个Json文件。我有一个问题要从第二个Json获取数据,具体取决于第一个Json。
我要显示第二个Json的“ changePercent”键,具体取决于第一个Json的“短键”。
“符号”必须与“短”匹配
这是一个php文件。我正在尝试检索实时数据。
第一杰森:
[
{"long":"Microsoft","short":"MSFT"},
{"long":"Facebook","short":"FB"},
{"long":"Frankfurt Dax Index","short":"DAX30"}
]
第二个杰森:
{
"AAPL":{"quote":{"symbol":"AAPL","changePercent":0.04}},
"FB":{"quote":{"symbol":"FB","changePercent":0.03}}
}
我的代码:
$json1 = $CCWE->feed($CCWE->config->feeds->coincap->front);
$json2 = file_get_contents('json2url');
$obj = json_decode($json2);
if ( in_array($json1->short , array('AAPL','MSFT'), true ) ) {
echo $obj->{$json1->short}->changePercent;
}
我希望获得changePercent
答案 0 :(得分:0)
您不需要第一个json。
$json2 = file_get_contents('json2url');
/**
* Explanation:
* passing `true` to json_decode will result in an array instead of an object.
*/
foreach ( json_decode($json2, true) as $short=>$data )
{
if ( in_array($short, ['AAPL', 'MSFT']) ) {
echo $short . " changed: " . $data['quote']['changePercent'] . "<br>\n";
}
}
答案 1 :(得分:0)
如果JSON数据符合您的指示,那么$json-short
应该会出错,因为$json1
是一个数组,并且只能对对象执行->
。
似乎您想查找对应的键,并在匹配时获取百分比。您可以按照以下步骤进行操作。
foreach($json1 as $obj1) {
if (isset($obj->{$obj1->short})) {
echo $obj1->short . "\n";
echo $obj->{$obj1->short}->quote->changePercent . "\n";
}
}