在foreach循环中计算多个数组?

Calculations multiple arrays in foreach loop?

我有一个数据库并对其执行 SQL 请求以检索数据。我在 SQL-请求中使用 LIMIT 语句一次仅检索八行 SELECT-ed 数据库数据,并使用 DESC-命令对返回的数据进行降序排序。然后可以通过执行 ajax-请求的专用加载按钮以相同的方式添加更多数据。

我的 foreach ($result as $data) 中的数组有以下 structure/key-value-pairs.

Array (
    [*keyname0*] => group-id
    [*keyname1*] => name of 1st-item
    [*keyname2*] => state of 1st-item
    [*keyname3*] => 93.42
    [*keyname4*] => unit of 1st-item
)

Array (
    [*keyname0*] => group-id
    [*keyname1*] => name of 2nd-item
    [*keyname2*] => state of 2nd-item
    [*keyname3*] => 93.12
    [*keyname4*] => unit of 2nd-item
)

Array (
    [*keyname0*] => group-id 
    [*keyname1*] => name of 3rd-item
    [*keyname2*] => state of 3rd-item
    [*keyname3*] => 89.92
    [*keyname4*] => unit of 3rd-item
)

Array (
    [*keyname0*] => group-id 
    [*keyname1*] => name of 4th-item
    [*keyname2*] => state of 4th-item
    [*keyname3*] => 89.70
    [*keyname4*] => unit of 4th-item
)
...

我的目标 是计算由 foreach 循环

(动态)创建的倍数 items/arrays

上面显示的第一个数组的结果应该是相应的:

我的尝试

我的输出

此代码结合 SQL-请求在浏览器中显示八个元素,包括图片、名称、相应项目的值和计算值。第一个元素包含该项目的正确计算并显示 -3.50 的值。到目前为止,一切都很好。然后,以下项目将显示一个值列表,如下所示。

粗体值是该特定元素的正确值。当我按下加载按钮时,它真的变得很奇怪,因为所有值都堆叠在前一个值之上。所以带有单独的 SQL-request 的嵌套 foreach 循环似乎对我来说真的不起作用! 有没有办法避免单独的 SQL-request 与另一个变量并且只使用已经存在的变量 $data 来完成这个任务?

我是一个绝对的初学者,完全不确定这是完全错误的方法还是可能的正确途径。如果有人可以为我解决这个问题或将我推向正确的方向,我将不胜感激。我们非常欢迎您的帮助,因为这是我项目的必备条件。

顺便说一句:我还没有研究其他选择,比如使用 JavaScript。如果这可能是获得所需结果的更合适的方法,那么这对我来说也很好。对于这个问题,我仍然坚持PHP

正如 CBroe 在评论中所述,您只需在 foreach 循环中使用 key/index 来创建 sum

<?php
    $data = [
        [
            'indexname0' => 'group-id',
            'indexname1' => 'name of 1st-item',
            'indexname2' => 'state of 1st-item',
            'indexname3' => 93.42,
            'indexname4' => 'unit of 1st-item',
        ],
        [
            'indexname0' => 'group-id',
            'indexname1' => 'name of 1st-item',
            'indexname2' => 'state of 1st-item',
            'indexname3' => 93.12,
            'indexname4' => 'unit of 1st-item',
        ],
        [
            'indexname0' => 'group-id',
            'indexname1' => 'name of 1st-item',
            'indexname2' => 'state of 1st-item',
            'indexname3' => 89.92,
            'indexname4' => 'unit of 1st-item',
        ],
        [
            'indexname0' => 'group-id',
            'indexname1' => 'name of 1st-item',
            'indexname2' => 'state of 1st-item',
            'indexname3' => 89.70,
            'indexname4' => 'unit of 1st-item',
        ],
    ];


    foreach($data as $index => $value) {
        if (!isset($data[$index+1])) continue;
        echo $data[$index+1]['indexname3'] - $data[$index]['indexname3'].'<br />';
    }

demo