我想为自己编程一个显示一些公司数据的网页。 我已经找到了一个显示不同值的API,有人可以选择。
https://financialmodelingprep.com/developer/docs#Companies-Financial-Statements
所以我开始整理我的网页并添加了输入。这样,用户可以选择他要搜索的公司。
<input type="text" name="Ticker" placeholder="Ticker Symbol">
然后,在文件末尾,我添加了一个php部分,该部分从URL中选择数据(JSON):
<?php
if(isset($_GET['Ticker']))
{
$Ticker_Name = $_GET['Ticker'];
echo '<p>Your choosen company is '. $Ticker_Name . '</p>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://financialmodelingprep.com /api/financials/income-statement/' . $Ticker_Name);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
}
?>
这将显示从api提供的原始信息。 但是我遇到的问题是格式化/访问API提供的json数据。
我最后尝试的是:
<?php
if(isset($_GET['Ticker']))
{
$Ticker_Name = $_GET['Ticker'];
echo '<p>Your choosen company is '. $Ticker_Name . '</p>';
$url = file_get_contents('https://financialmodelingprep.com/api/financials/income-statement/' . $Ticker_Name);
//$daten = file_get_contents($url);
$json = json_decode($url, true);
echo $json->Revenue;
}
?>
获取此消息:
注意:试图获取非对象的属性“收入”
不显示任何数据。
如果有人能帮助我,我将非常感谢。
答案 0 :(得分:0)
之所以会这样,是因为您在 json_decode 中传递了 true ,这意味着它返回了关联数组而不是对象,您可以像 echo $ json [$ Ticker_Name ] ['Revenue'] ['2013-09'] 或 print_r($ json [$ Ticker_Name] ['Revenue'])。
尝试此代码
代码段
<?php
if(isset($_GET['Ticker']))
{
$Ticker_Name = $_GET['Ticker'];
echo '<p>Your choosen company is '. $Ticker_Name . '</p>';
$url = file_get_contents('https://financialmodelingprep.com/api/financials/income-statement/' . $Ticker_Name);
$url = str_replace('<pre>','',$url); //Removing <pre> html tag
$json = json_decode($url, true);
print_r($json[$Ticker_Name]['Revenue'];
}
?>
注意:此API返回一个无效的json,它在响应的开始处添加了<pre>
标签。因此,json_decode始终无法解码,您需要使用str_replace删除该标签。我添加了$url = str_replace('<pre>','',$url);
这一行以使其正常工作。
答案 1 :(得分:0)
谢谢您的回答,它正在起作用。
但是,如果我尝试在该输入框附近放置另一个输入框,以使用户正在搜索网页的哪个值不再更新所选输入。 它不再更新。
<label>Enter Ticker Symbol</label>
<input type="text" name="Ticker" placeholder="Ticker Symbol">
<label>Enter your Value</label>
<input type="text" name="Value" placeholder="Value">
<?php
if(isset($_GET['Ticker']))
{
$Ticker_Name = $_GET['Ticker'];
$Value = $_GET['Value'];
echo '<p>Your choosen company is '. $Ticker_Name . '</p>';
echo '<p>Your choosen value is '. $Value . '</p>';
$url = file_get_contents('https://financialmodelingprep.com/api/financials/income-statement/' . $Ticker_Name);
$url = str_replace('<pre>','',$url); //Removing <pre> html tag
$json = json_decode($url, true);
print_r($json[$Ticker_Name][$Value]);
}
?>
非常感谢您。