Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中如何根据键添加数组的和值_Php_Arrays - Fatal编程技术网

php中如何根据键添加数组的和值

php中如何根据键添加数组的和值,php,arrays,Php,Arrays,我有一个像这样的php数组 Array ( [0] => Array ( [Sr_No] => 1 [Asan_Category] => Warm-Up [Asan_Cat_Val] => 8 [Asan_Sub_Category] => Ankle [Asan_Sub_Cat_Val] => 35

我有一个像这样的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);
        }


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

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
是我在上面显示的数组,在查找数组中,我得到的是uniqe值,但没有得到它们的总数

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

但是,如果必须在代码中执行此操作,则可以使用键控数组基本上按照需要匹配多少字段才能将它们组合在一起:

e、 g


然后做两个嵌套循环来遍历这个问题,并总结所有问题。

这里有一些有用的技术来解释

  • 通过建立一个已知要保留(复制到)输出数组中的密钥集合,可以减少循环数组声明中的眼睛疲劳。这样,您就不必键入每个
    $keyName=>$row[$keyName],
    之类的内容(但最终会让您感到高兴)

  • 在构建输出数组时声明临时关联键(使用
    $id
    ),以允许
    isset()
    对预先存在的组进行超级快速检查

  • 如果尚未设置组,则将带有新密钥的数据与带有原始密钥的数据一起存储。不需要算术。我的代码段中的
    +
    符号不是“加法运算符”,而是“数组联合运算符”——它们在不调用函数的情况下合并三个数组(否则
    array\u merge()
    也会这样做)

  • 迭代完数组后,您可以通过调用
    array\u values()
    来选择重新索引结果(删除临时关联键)。如果您不担心这些临时键的存在,可以省略函数调用

  • 如果以前遇到过某个组,则只需修改
    总步骤
    。对于最简短的语法,请使用加法赋值运算符(
    +=

  • 代码:()

    输出:

    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,
      ),
    )
    

    对不起,总步数包含按id求和。能否提供虚拟数据的
    var\u导出
    输出?Asan id是Asan名称val@satya现在,您已经问了几个php问题,其中包括示例输入数组。请始终以
    var\u export()
    输出或json字符串的形式提供示例数组数据。这样志愿者就不必费力地将数据转换成代码就绪的结构。