首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >多维数组php中的类和值

多维数组php中的类和值
EN

Stack Overflow用户
提问于 2018-05-31 23:29:24
回答 6查看 92关注 0票数 1

我需要对数组中元素1中的值求和,其中元素0中的值是重复的。

这里是我的数组的一小部分

代码语言:javascript
复制
Array
(
    [0] => 3
    [1] => 1
)
Array
(
    [0] => 3
    [1] => 2
)
Array
(
    [0] => 3
    [1] => 128
)
Array
(
    [0] => 39
    [1] => 4
)

我期望看到的结果是

代码语言:javascript
复制
Array
(
    [0] => 3
    [1] => 131
)
Array
(
    [0] => 39
    [1] => 4
)

我仍然是PHP的新手,所以非常感谢您的帮助。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-06-01 00:26:14

您可以组合使用array_intersect、array_column和array_sum来仅迭代两次。(每个唯一的第0列值一个)。

代码语言:javascript
复制
$col0 = array_column($arr, 0);
$col1 = array_column($arr, 1);

Foreach(array_unique($col0) as $val){
   $res[] = [$val, array_sum(array_intersect_key($col1, array_intersect($col0,[$val])))];
}
Var_dump($res);

https://3v4l.org/gKb5b

票数 1
EN

Stack Overflow用户

发布于 2018-06-01 00:26:58

我这样做的方法是确保所有的副本都放在同一个数组中。

代码语言:javascript
复制
// Your data
$sample = [[3, 1],[3, 2],[3, 128],[39, 4]];

foreach($sample as $array){
  $tmp[$array[0]][] = $array[1];
}

# Output: {"3":[1,2,128],"39":[4]}

现在对数组求和,并将其放回原来的结构。

代码语言:javascript
复制
foreach($tmp as $k => $v){
  $new[] = [$k, array_sum($v)];
}

# Output: [[3,131],[39,4]]

但是有很多路通向罗马。

票数 1
EN

Stack Overflow用户

发布于 2018-05-31 23:37:51

试试这段代码。这可能会对你有帮助。

代码语言:javascript
复制
$array = array(["0" => 3, "1" => 1] , ["0" => 3, "1" => 2], ["0" => 3, "1" => 128], ["0" => 39, "1" => 4]);
$finalArray = [];
foreach($array as $a) {
   $finalArray[$a[0]][0] = $a[0];
   $finalArray[$a[0]][1] = !isset($finalArray[$a[0]][1]) ? $a[1] : $finalArray[$a[0]][1] + $a[1];
}
echo '<pre>';
print_r($finalArray);
exit;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50627884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档