如何获得字符串中所有数字的总和,但是对于整个列?

问题描述 投票:-2回答:2

数据:

  • MEL1INFA73已确认。 Ksh29.00发送至Safaricom在21/5/18上午3:29为Tunukiwa帐户提供新M-PESA余额为Ksh5.50。交易成本,Ksh0.00。
  • MEE6ESSVCS确认。支付给Naivas West End Plaza的Ksh2,240.00。在14/5/18,晚上8:13。新的M-PESA余额为Ksh4,753.50。交易成本,Ksh0.00。
  • MEF1EZ0MNR确认。您已于15/5/18上午9:36从巴克莱银行K LTD 303031收到Ksh10,000.00新M-PESA余额为Ksh14,775.50。用M-PESA购买商品。

以下代码生成除整列之外的每一行中的数字总和:

 <?php 
                if(count($json_data["data"]) > 0){ ?>
                    <?php $_count = 1;
                        foreach($json_data["data"] as $row){ ?>
                            <tr>
                                <td><?php 
                                $str =$row["msg_body"];
                                preg_match_all("/ksh\s*(\d+\.\d+)/i", $str, $matches);
                                echo array_sum($matches[1]); ?></td>
                            </tr>
                    <?php $_count ++; }
                    ?>
            <?php }else{

                }
            ?></td>
php mysql arrays
2个回答
0
投票

如果我理解正确你只需要存储整个总和,然后将其打印出去。就像是:

<?php 
                if(count($json_data["data"]) > 0){ ?>
                    <?php $_count = 1;
                          $totalSum = 0;
                        foreach($json_data["data"] as $row) { ?>
                            <tr>
                                <td><?php 
                                $str =$row["msg_body"];
                                preg_match_all("/ksh\s*(\d+\.\d+)/i", $str, $matches);
                                $rowSum = array_sum($matches[1]);
                                $totalSum += $rowSum;
                                echo  $rowSum;?></td>
                            </tr>
                    <?php $_count ++; }
                    ?>
                    <tr><td>Total sum: <?php echo $totalSum; ?></td></tr>
            <?php }else{

                }
            ?></td>

当然,你可以调整你的HTML。


0
投票

因为我们正在处理数组和preg_match_all,所以我相信你可以内爆数组并执行一个preg_match_all而不是循环它。

$AllItems = implode(" ", $json_data["data"]);
preg_match_all("/ksh\s*(\d+\.\d+)/i", str_replace(",","",$AllItems), $matches);
$total = array_sum($matches[1]);

例: https://3v4l.org/Pk7YT

编辑注意到有逗号为千位分隔符。需要删除正则表达式并求和与str_replace一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.