使用 PHP 调用 JSON 文件,但无法以我想要的方式回显

Calling a JSON file with PHP but cant echo in a way i would like to

我想用一个非常简单的 php 文件跟踪我感兴趣的股票价格。为此,我试图从 jsonld 文件中调用某些数据,但无法这样做。那主要是因为我无法设置正确的顺序。 这是我的 php 代码:

<?

// Get the contents of the JSON file
$strJsonFileContents = file_get_contents("data.jsonld");
$datas = json_decode($strJsonFileContents, True);
//var_dump($datas); // print array

$dataname = $datas->currency[ALGYO];
$dataprice = $datas->currency[ALGYO]->price;
echo $data;

?>

我调用了文件,可以用var_dump.

回显

可以看到Json文件here

我想做的是调用货币 ALGYO 及其价格,然后在另一个 table 或线路调用中调用 ACSEL 及其价格等。我只会调用某些特定元素,因此所有元素的列表不是我要找的。有人能给我指路吗?提前致谢。


对于那些不想关注 pastebin 的人 link 我还在下面留下 json 的可读版本。

{"@context": "http://schema.org",
"@type": "WebPage",
"name": "BORSA",
"mainEntity": {
"@type": "ItemList",
"name": "BORSA",
"itemListElement": [

{
"@type": "ExchangeRateSpecification",
"currency": "ALGYO",
"currentExchangeRate": {
"@type": "UnitPriceSpecification",
"price": 26.14,
"priceCurrency": "TRY"
}
},

{
"@type": "ExchangeRateSpecification",
"currency": "ARZUM",
"currentExchangeRate": {
"@type": "UnitPriceSpecification",
"price": 24.74,
"priceCurrency": "TRY"
}
},

{
"@type": "ExchangeRateSpecification",
"currency": "ACSEL",
"currentExchangeRate": {
"@type": "UnitPriceSpecification",
"price": 22.9,
"priceCurrency": "TRY"
}
},

{
"@type": "ExchangeRateSpecification",
"currency": "ADANA",
"currentExchangeRate": {
"@type": "UnitPriceSpecification",
"price": 12.19,
"priceCurrency": "TRY"
}
},

{
"@type": "ExchangeRateSpecification",
"currency": "ADBGR",
"currentExchangeRate": {
"@type": "UnitPriceSpecification",
"price": 8.62,
"priceCurrency": "TRY"
}
},

{
"@type": "ExchangeRateSpecification",
"currency": "PAMEL",
"currentExchangeRate": {
"@type": "UnitPriceSpecification",
"price": 22.02,
"priceCurrency": "TRY"
}
}
]
}
}

虽然你说你不想要所有元素的列表不是我要找的东西,如果你想按照自己的顺序挑选特定的元素,它可能是更简单。

这只是提取 currentExchangeRate 子数组并按货币对其进行索引...

$rates = array_column($datas['mainEntity']["itemListElement"],
         "currentExchangeRate", "currency");

echo "ALGYO rate=" . $rates['ALGYO']['price'];
print_r($rates);

给...

ALGYO rate=26.14
Array
(
    [ALGYO] => Array
        (
            [@type] => UnitPriceSpecification
            [price] => 26.14
            [priceCurrency] => TRY
        )

    [ARZUM] => Array
        (
            [@type] => UnitPriceSpecification
            [price] => 24.74
            [priceCurrency] => TRY
        )

    [ACSEL] => Array
        (
            [@type] => UnitPriceSpecification
            [price] => 22.9
            [priceCurrency] => TRY
        )

    [ADANA] => Array
        (
            [@type] => UnitPriceSpecification
            [price] => 12.19
            [priceCurrency] => TRY
        )

    [ADBGR] => Array
        (
            [@type] => UnitPriceSpecification
            [price] => 8.62
            [priceCurrency] => TRY
        )

    [PAMEL] => Array
        (
            [@type] => UnitPriceSpecification
            [price] => 22.02
            [priceCurrency] => TRY
        )

)

您可以使用一个函数,它允许您从 json.

中获取 'item'(股票)特定数据

您可以(应该)调整功能以满足您的需要,这是一个搜索商品及其价格的示例:returns:

$json = file_get_contents('data.json');
$arr = json_decode($json, true);

getItem($arr, 'ALGYO'); // item : ALGYO price: 26.14
getItem($arr, 'ACSEL'); // item : ACSEL price: 22.9

function getItem($arr, $item)
{
    $records = $arr['mainEntity']['itemListElement']; // the records
    foreach ($records as $record) {
        if ($record['currency'] == $item) {
            echo 'item : ' . $item;
            echo '<br />';
            echo 'price : ' . $record['currentExchangeRate']['price'];
            echo '<br />';
        }
    }
}