【问题标题】:SUM of columns in a table (JSON data) in PHPPHP中表(JSON数据)中列的总和
【发布时间】:2018-07-07 10:15:07
【问题描述】:

找不到具体的答案,所以想问一下。简而言之,我有一个表,它根据存储在我的数据库中的数据从 API 检索信息,我要做的就是从该表中获取全部的某些列,而不是全部列,以便我可以在其他地方使用它们网站。例如,让我们使用盈亏列和 Total Divi。我是否必须以某种方式将结果存储为一个数组,以便我可以在其他地方检索它,还是有什么不同?

<th>Profit/Loss</th>
<?php
        for($x=0;$x<$y;$x++) 
        {?>
            <tr>
                <td class="input"><?php 
                    if($pri[$x] > $lastprice[$x])
                    {
                        echo ($lastprice[$x]-$pri[$x]) * $vol[$x];
                    }
                    else if($pri[$x] < $lastprice[$x]) 
                    {
                         echo ($lastprice[$x]-$pri[$x]) * $vol[$x];
                    }
                    else
                        echo '0'; 
                    ?></td>
                 <td><?php 
                    $div = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=stats&filter=dividendRate");  
                    $div = json_decode($div,TRUE);  
                    foreach($div as $divi => $value) {
                    echo $value['stats']['dividendRate']; 
                    }
                    ?></td>
                <td><?php 
                    $firstno  = floatval($vol[$x]);
                    $secondno = floatval($value['stats']['dividendRate']);
                    $sum = $firstno * $secondno;
                    print ($sum);
                    ?></td>
        </tr>
    <?php } ?>

所以我只留下了损益行/列以及股息金额(第 2 列)和股息总额,以便您首先了解我是如何获得这些数字的。

【问题讨论】:

    标签: php mysql arrays json html-table


    【解决方案1】:

    您的要求是,您要在代码的后期使用每一行的盈亏总股息列数据。您可以做的是,在最外面的 for 循环之前创建一个空数组,并在循环的每次迭代中,追加键为 $x 和值将是 profit/loss 和 总股息 列数据。

    <th>Profit/Loss</th>
    <?php
        $arr = array();
        for($x=0; $x < $y; $x++){
        ?>
            <tr>
                <td class="input">
                <?php 
                    $profitOrLoss = ($lastprice[$x]-$pri[$x]) * $vol[$x];
                    echo $profitOrLoss;
                ?>
                </td>
                <td>
                <?php 
                    $div = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=stats&filter=dividendRate");  
                    $div = json_decode($div,TRUE); 
                    $sum = 0;
                    foreach($div as $divi => $value) {
                        echo $value['stats']['dividendRate']; 
                        $sum += (floatval($vol[$x]) + floatval($value['stats']['dividendRate']));
                    }
                ?>
                </td>
                <td>
                <?php 
                    echo $sum;
                ?>
                </td>
            </tr>
        <?php 
            $arr[$x] = array('profitOrLoss' => $profitOrLoss, 'sum' => $sum);
        } 
    ?>
    

    更新(1):

    基于your comment我想要的只是将 Profit/Loss 列中的所有行以及 Total Divi 列中的行加在一起。解决方案代码如下所示:

    <th>Profit/Loss</th>
    <?php
        $profitOrLossSum = 0;
        $dividendRateSum = 0;
        for($x=0; $x < $y; $x++){
        ?>
            <tr>
                <td class="input">
                <?php 
                    $profitOrLoss = ($lastprice[$x]-$pri[$x]) * $vol[$x];
                    $profitOrLossSum += $profitOrLoss;
                    echo $profitOrLoss;
                ?>
                </td>
                <td>
                <?php 
                    $div = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=stats&filter=dividendRate");  
                    $div = json_decode($div,TRUE); 
                    $sum = 0;
                    foreach($div as $divi => $value) {
                        echo $value['stats']['dividendRate']; 
                        $sum += (floatval($vol[$x]) + floatval($value['stats']['dividendRate']));
                        $dividendRateSum += floatval($value['stats']['dividendRate']);
                    }
                ?>
                </td>
                <td>
                <?php 
                    echo $sum;
                ?>
                </td>
            </tr>
        <?php 
        } 
        $arr = array('profitOrLossSum' => $profitOrLossSum, 'dividendRateSum' => $dividendRateSum);
    ?>
    

    旁注:如果要查看完整的数组结构,请var_dump($arr);

    【讨论】:

    • 感谢您的快速回复,非常感谢!这绝对是朝着正确方向迈出的一步,但现在,它只显示最后一行的结果。所以本质上,它不会将该列中的所有值相加,最好的方法是什么?如果有帮助,这里是 var_dump:array(1) { [4]=> array(2) { ["pnl"]=> float(665) ["sum"]=> float(73) } }
    • @Frenzyy 你能解释一下吗,它只显示最后一行的结果它不会将该列中的所有值相加,您在这里指的是哪一列,第 2 列还是第 3 列?
    • @Frenzyy 我已经更新了我的答案。如果您想要的话,请告诉我。
    • @Frenzyy 我已经更新了我的答案,请参阅我的答案的 Update(1) 部分。希望这能解决您的问题。
    • @Frenzyy 啊,代码中有一个小错误。我已经更新了我的答案,请参阅我的答案的 Update(1) 部分。
    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多