首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在foreach循环中减去两个数字,并显示每个结果的结果。

在foreach循环中减去两个数字,并显示每个结果的结果。
EN

Stack Overflow用户
提问于 2016-08-08 15:11:09
回答 2查看 718关注 0票数 1

我有一个前程循环如下所示。

我希望从循环中在它前面出现的$ came >came_came中减去$came>came_came,然后挣扎!

代码语言:javascript
运行
复制
foreach ($wrap_query->result() as $wrap)
{
    echo date("D d M Y", strtotime($wrap->wrap_date))." - ";
    echo money_format('%n', $wrap->wrap_total)." - ";

    echo "<br />";
}

目前的产出如下:

2016年8月7日-国标10,000.00

2016年8月6日星期六-£12 000.00

2016年8月5日星期五-8,000.00国标

我想要的是

2016年8月7日太阳-£10,000.00 (-£2,000)

2016年8月6日星期六-£12 000.00(£4 000)

2016年8月5日星期五-8,000.00国标

任何和所有的帮助感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-08 15:58:17

下面的注释代码可能会让您开始工作。演示也可以找到这里

代码语言:javascript
运行
复制
    <?php

        setlocale(LC_MONETARY, 'en_GB'); 

        // LET US IMAGINE FOR A MOMENT THAT $wrap_query->result() CONTAINS
        // THE FOLLOWING SIMULATED DATA MIMICKING YOUR DATA STRUCTURE...
        $simulatedWrap1     = new stdClass();
        $simulatedWrap2     = new stdClass();
        $simulatedWrap3     = new stdClass();

        $simulatedWrap1->wrap_date  = "2016-08-07";
        $simulatedWrap1->wrap_total = 10000.00;

        $simulatedWrap2->wrap_date  = "2016-08-06";
        $simulatedWrap2->wrap_total = 12000.00;

        $simulatedWrap3->wrap_date  = "2016-08-05";
        $simulatedWrap3->wrap_total = 8000.00;

        $rWrapCollection    = [
            $simulatedWrap1,
            $simulatedWrap2,
            $simulatedWrap3,
        ];

        // MAKE A COPY OF THE MAIN ARRAY COLLECTION
        // THIS WOULD BE USED WITHIN THE LOOP TO MOVE THE ARRAY CURSOR
        // TO THE NEXT ELEMENT WITHIN THE COLLECTION
        $rWrapClone         = $rWrapCollection;

        // JUST FOR FUN: EXPLICITLY MOVE THE CURSOR TO THE FIRST
        // ELEMENT IN THE COLLECTION
        current($rWrapClone);

        // CREATE AND INITIALIZE A VARIABLE $output TO AN EMPTY STRING.
        // THIS VARIABLE WILL HOLD THE HTML CONTENT GENERATED WITHIN THE LOOP
        $output             = "";

        foreach ($rWrapCollection as $index=>$wrap){
            // MOVE THE CURSOR TO THE NEXT ITEM & CATCH THE VALUE IN A VARIABLE 
            $nextWrap       = next($rWrapClone);
            $output        .= date("D d M Y", strtotime($wrap->wrap_date)) . " - ";
            $output        .= money_format('%n', $wrap->wrap_total);

            // IF THERE IS STILL ANY NEXT ITEM, THEN CALCULATE
            // THE DIFFERENCE BETWEEN THE CURRENT & NEXT ITEM       
            if($nextWrap){
                $difference = $wrap->wrap_total - $nextWrap->wrap_total;
                $output    .= " (" . money_format('%n',$difference) . ")";
            }

            $output .= "<br />";
        }

        echo $output;

        //PRODUCES:
        Sun 07 Aug 2016 - £10,000.00 (-£2,000.00)
        Sat 06 Aug 2016 - £12,000.00 (£4,000.00)
        Fri 05 Aug 2016 - £8,000.00

与您的独特情况相关的有效代码:

代码语言:javascript
运行
复制
    <?php

        $output         = "";
        $resultsCopy    = $wrap_query->result();
        current($resultsCopy);

        foreach ($wrap_query->result()  as $wrap) {
            $nexWrap        = next($resultsCopy);
            $output        .= date("D d M Y", strtotime($wrap->wrap_date)) . " - ";
            $output        .= money_format('%n', $wrap->wrap_total);

            if($nexWrap){
                $difference = $wrap->wrap_total - $nexWrap->wrap_total;
                $output    .= " (" . money_format('%n',$difference) . ")";
            }

            $output .= "<br />";
        }

        echo $output;
票数 1
EN

Stack Overflow用户

发布于 2016-08-08 15:46:54

当你走的时候,要注意上一个项目。如果有前一项(第一项之后的所有结果),则在启动新行之前计算差异并输出它。

代码语言:javascript
运行
复制
$previous = null;
foreach ($wrap_query->result() as $wrap) {
    if ($previous) {
        echo " (" .money_format('%n', $previous->wrap_total - $wrap->wrap_total) .")<br>";
    }
    echo date("D d M Y", strtotime($wrap->wrap_date))." - ";
    echo money_format('%n', $wrap->wrap_total);
    $previous = $wrap;   // set previous to current
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38832788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档