为了账号安全,请及时绑定邮箱和手机立即绑定

如何对数组中的字符串值求和

如何对数组中的字符串值求和

PHP
智慧大石 2022-01-23 10:49:38
这是我的数组Array(    [0] => Array        (            [Asan_Name_Val] => 447            [Actual_Ratio] => 15/00/15,04/05/05        )    [1] => Array        (            [Asan_Name_Val] => 447            [Actual_Ratio] => 10/05/11,00/06/05        ))实际比率值应与其值相加,例如 15+10=15,00+05=05,15+11=26 ..... 所以我想要的所需输出采用这种格式Array(    [Asan_Name_Val] => 447    [Actual_Ratio] => 25/05/26,04/11/10)
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

用 PHP 写了一个 hacky 解决方案。会起作用,但强烈建议您进行优化。


<?php

$myArray = array(

  0 => array(

  'Asan_Name_Val' => '447',

  'Actual_Ratio' => '15/00/15,04/05/05'

  ),

  1 => array(

  'Asan_Name_Val' => '447',

  'Actual_Ratio' => '10/05/11,00/06/05'

  )

);

$sums = array_fill(0,6,'0');

foreach($myArray as $arr){

  $ratio = $arr['Actual_Ratio'];

  $j=0;

  for($i=0;$i<6;$i++){

    $sums[$i] = sprintf("%02d", $sums[$i]+substr($ratio,$j,2));

    $j = $j+3;

  }

}

$finalRatio = "$sums[0]/$sums[1]/$sums[2],$sums[3]/$sums[4]/$sums[5]";


$desiredArray['Asan_Name_Val'] = '447';

$desiredArray['Actual_Ratio'] = $finalRatio;


print_r($desiredArray);


查看完整回答
反对 回复 2022-01-23
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

这将是一种灵活而干净的方法:


<?php

$input = [

    [

        'Asan_Name_Val' => "447",

        'Actual_Ratio' => "15/00/15,04/05/05"

    ],

    [

        'Asan_Name_Val' => "447",

        'Actual_Ratio' => "10/05/11,00/06/05"

    ]

];

$output = [];

$formatter = new NumberFormatter('de_DE', NumberFormatter::DECIMAL);


array_walk($input, function($entry) use (&$output, $formatter) {

    $values = explode("/", $entry['Actual_Ratio']);

    foreach($values as &$value) {

        $value = $formatter->parse($value);

    }

    $output[$entry['Asan_Name_Val']][] = $values;

});


array_walk($output, function(&$entry, $key) use ($formatter) {

    for ($i = 0; $i < count($entry[0]); $i++) {

        $sums[] = $formatter->format(array_sum(array_column($entry, $i)));    

    }

    $entry = [

        'Asan_Name_Val' => $key,

        'Actual_Ratio' => implode("/", $sums)

    ];

});


print_r(array_values($output));

输出显然是:


Array

(

    [0] => Array

        (

            [Asan_Name_Val] => 447

            [Actual_Ratio] => 25/5/26,04/11/10

        )


)


查看完整回答
反对 回复 2022-01-23
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信