首页 > 解决方案 > 如何根据php中的键添加数组的总和值

问题描述

我有一个这样的 php 数组

Array
(
    [0] => Array
        (
            [Sr_No] => 1
            [Asan_Category] => Warm-Up
            [Asan_Cat_Val] => 8
            [Asan_Sub_Category] => Ankle
            [Asan_Sub_Cat_Val] => 35
            [Asan_Name] => General Ankle Warm up
            [Asan_Name_Val] => 447
            [Prescribed_Steps] => 40
            [Prescribed_Ratio] => 00
            [Actual_Steps] => 12
            [Actual_Ratio] => 0
        )
 [1] => Array
        (
            [Sr_No] => 2
            [Asan_Category] => Warm-Up
            [Asan_Cat_Val] => 8
            [Asan_Sub_Category] => Knee
            [Asan_Sub_Cat_Val] => 111
            [Asan_Name] => General knee warm up
            [Asan_Name_Val] => 464
            [Prescribed_Steps] => 20
            [Prescribed_Ratio] => 00
            [Actual_Steps] => 14
            [Actual_Ratio] => 0
        )
[2] => Array
        (
            [Sr_No] => 1
            [Asan_Category] => Warm-Up
            [Asan_Cat_Val] => 8
            [Asan_Sub_Category] => Ankle
            [Asan_Sub_Cat_Val] => 35
            [Asan_Name] => General Ankle Warm up
            [Asan_Name_Val] => 447
            [Prescribed_Steps] => 40
            [Prescribed_Ratio] => 00
            [Actual_Steps] => 10
            [Actual_Ratio] => 0
        )
[3] => Array
        (
            [Sr_No] => 2
            [Asan_Category] => Warm-Up
            [Asan_Cat_Val] => 8
            [Asan_Sub_Category] => Knee
            [Asan_Sub_Cat_Val] => 111
            [Asan_Name] => General knee warm up
            [Asan_Name_Val] => 464
            [Prescribed_Steps] => 20
            [Prescribed_Ratio] => 00
            [Actual_Steps] => 9
            [Actual_Ratio] => 0
        )
)

The desired output I want 

Array
(
    [0] => Array
        (
            [Asan_Id] => 447
            [Asan_Category] => Warm-Up
            [Asan_Sub_Category] => Ankle
            [Asan_Name] => General Ankle Warm up
            [Prescribed_Steps] => 40
            [Prescribed_Ratio] => 00
            [Total_Steps] => 22
        )

    [1] => Array
        (
            [Asan_Id] => 464
            [Asan_Category] => Warm-Up
            [Asan_Sub_Category] => Knee
            [Asan_Name] => General knee warm up
            [Prescribed_Steps] => 20
            [Prescribed_Ratio] => 00
            [Total_Steps] => 23
        )
)

我希望那些重复的数据合而为一,但它们的不同实际步骤成为总步骤的总和。请帮助我,因为我尝试了一些代码但没有像这样成功

    $asan=[];
    $total_steps=0;
    foreach ($aasan_details as $key) {

        $total_steps += $key['Actual_Steps'];
        if(!in_array($key['Asan_Name_Val'],$asan))
        {
            $asan[] = $key['Asan_Name_Val'];

          $lookup[] = array("Asan_Id"=>$key['Asan_Name_Val'],
                      "Asan_Category"=>$key['Asan_Category'],
                      "Asan_Sub_Category"=>$key['Asan_Sub_Category'],
                      "Asan_Name"=>$key['Asan_Name'],
                      "Prescribed_Steps"=>$key['Prescribed_Steps'],
                      "Prescribed_Ratio"=>$key['Prescribed_Ratio'],
                      'Total_Steps'=>$total_steps);
        }


    }

不工作,我该怎么办,请帮帮我

我在上面显示的数组在哪里$aasan_details,在查找数组中我得到了唯一的值但没有得到它们的总数

标签: phparrays

解决方案


最好的解决方案是将其移动到数据库中并使用查询为您执行确切的操作。

但是,如果您必须在代码中执行此操作,则可以使用键控数组将它们基本上分组,但是需要匹配许多字段才能将它们连接起来:

例如

foreach ..
$consolidated[$item['Asan_Cat_Val']][$item['Asan_Sub_Cat_Val']][] = $item;

然后做几个嵌套循环来遍历它并总结一切。


推荐阅读