gpt4 book ai didi

PHP对二维数组中具有相同键值的值求和

转载 作者:行者123 更新时间:2023-12-02 11:17:56 24 4
gpt4 key购买 nike

问题:查找每个 'id''subtotal' 中的值的总和,并将每个 id 的相应总和存储在数组(或变量)。

我目前草率的解决方案是运行一个包含多个 if 语句的 foreach 来计算出现次数。这对于 5 个 id 之类的内容来说已经足够了,但我必须在 38 个 id 上进行迭代。如果可能的话,我想将结果按顺序存储在数组中。

怎样才能提高效率?任何和所有的帮助将不胜感激。 (请参阅本文末尾我的草率解决方案,以获得良好的笑声)

期望的结果:

  • 所有 ID 1 的总和 = 10
  • 所有 ID 2 的总和 = 18
  • 所有 ID 3 的总和 = 14
  • 所有 ID 4 的总和 = 4
  • 所有 ID 5 的总和 = 3

用于操作的数组代码

    $someArray = array(

array(
'id'=> 1,
'subtotal'=> 5),
array(
'id'=> 1,
'subtotal'=> 5),
array(
'id'=> 2,
'subtotal'=> 6),
array(
'id'=> 2,
'subtotal'=> 6),
array(
'id'=> 2,
'subtotal'=> 6),
array(
'id'=> 3,
'subtotal'=> 7),
array(
'id'=> 3,
'subtotal'=> 7),
array(
'id'=> 4,
'subtotal'=> 2),
array(
'id'=> 4,
'subtotal'=> 2),
array(
'id'=> 5,
'subtotal'=> 3),
);

草率的解决方案

$sum_id_1 = 0;
$sum_id_2 = 0;
$sum_id_3 = 0;
$sum_id_4 = 0;
$sum_id_5 = 0;

foreach ($someArray as $k) {

if ($k['id'] == 1) {
$sum_id_1 += $k['subtotal'];
}

if ($k['id'] == 2) {
$sum_id_2 += $k['subtotal'];
}

if ($k['id'] == 3) {
$sum_id_3 += $k['subtotal'];
}

if ($k['id'] == 4) {
$sum_id_4 += $k['subtotal'];
}

if ($k['id'] == 5) {
$sum_id_5 += $k['subtotal'];
}
}

草率的解决方案输出( echo )

  • 10
  • 18
  • 14
  • 4
  • 3

最佳答案

$sum = array_reduce($someArray, function($result, $item) {
if (!isset($result[$item['id']])) $result[$item['id']] = 0;
$result[$item['id']] += $item['subtotal'];
return $result;
}, array());

var_dump($sum); // array(5) { [1]=> int(10) [2]=> int(18) [3]=> int(14) [4]=> int(4) [5]=> int(3) }

对于 PHP <= 5.3 手动执行循环计数:

$sum = array();

foreach ($someArray as $item) {
if (!isset($sum[$item['id']])) $sum[$item['id']] = 0;
$sum[$item['id']] += $item['subtotal'];
}

关于PHP对二维数组中具有相同键值的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com