You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AlphaVantage的JSON响应转为PHP表格行内容?

问题描述

我正在构建一个以表格形式展示股票价格的网页,使用AlphaVantage API获取数据。现有PHP代码中,需要修改foreach循环内的echo语句,将给定的Global Quote格式JSON响应转为表格行,请问具体该如何修改?

现有PHP代码

<?php
$key="demo";
$url="https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=IBM&apikey=".$key;
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result=curl_exec($ch);
curl_close($ch);
$result=json_decode($result,true);
if(isset($result['Global Quote'])){
    echo "<table  id='customers' border='1'>
            <tr>
                <th>Symbol</th>
                <th>Open</th>
                <th>High</th>
                <th>Low</th>
                <th>Price</th>
                <th>Volume</th>
                <th>Change Percent</th>
            </tr>";
    foreach($result['Global Quote'] as $key=>$val){
        echo "Need write something here";
    }
    echo "</table>";
}else{
    echo "Something went wrong";
}
?>

对应的JSON响应

{
    "Global Quote": {
        "01. symbol": "IBM",
        "02. open": "121.6600",
        "03. high": "122.4300",
        "04. low": "118.6100",
        "05. price": "118.8100",
        "06. volume": "5346108",
        "07. latest trading day": "2022-09-30",
        "08. previous close": "121.6300",
        "09. change": "-2.8200",
        "10. change percent": "-2.3185%"
    }
}
解决方案

方案一:直接提取对应字段(简洁高效)

因为表头已经固定对应特定字段,无需遍历所有键值对,直接提取JSON中匹配表头的字段值生成表格行即可,避免引入多余列。修改后的完整代码如下:

<?php
$key="demo";
$url="https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=IBM&apikey=".$key;
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result=curl_exec($ch);
curl_close($ch);
$result=json_decode($result,true);
if(isset($result['Global Quote'])){
    $globalQuote = $result['Global Quote'];
    echo "<table  id='customers' border='1'>
            <tr>
                <th>Symbol</th>
                <th>Open</th>
                <th>High</th>
                <th>Low</th>
                <th>Price</th>
                <th>Volume</th>
                <th>Change Percent</th>
            </tr>";
    // 生成匹配表头的表格行
    echo "<tr>
            <td>{$globalQuote['01. symbol']}</td>
            <td>{$globalQuote['02. open']}</td>
            <td>{$globalQuote['03. high']}</td>
            <td>{$globalQuote['04. low']}</td>
            <td>{$globalQuote['05. price']}</td>
            <td>{$globalQuote['06. volume']}</td>
            <td>{$globalQuote['10. change percent']}</td>
          </tr>";
    echo "</table>";
}else{
    echo "Something went wrong";
}
?>

方案二:使用映射数组配合foreach(灵活可扩展)

如果后续需要动态调整表头或字段,可以先定义表头与JSON键的映射关系,通过foreach循环生成单元格,便于维护:

// 替换原代码中foreach循环的部分
$globalQuote = $result['Global Quote'];
// 定义需要展示的JSON字段顺序,匹配表头
$fieldMap = [
    '01. symbol',
    '02. open',
    '03. high',
    '04. low',
    '05. price',
    '06. volume',
    '10. change percent'
];

echo "<tr>";
foreach($fieldMap as $jsonKey){
    echo "<td>{$globalQuote[$jsonKey]}</td>";
}
echo "</tr>";

这种方式下,后续要添加或调整字段,只需修改$fieldMap数组即可,无需改动HTML结构。


内容的提问来源于stack exchange,提问作者Tushar Shelke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:25:27