teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

aa

2017/04/22 14:32

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -9,6 +9,30 @@
9
9
  [2 => 6],
10
10
  ];
11
11
 
12
+ $array2 = [];
13
+ foreach ($array as $pair) {
14
+ if (!isset($array2[key($pair)])) $array2[key($pair)] = 0;
15
+ $array2[key($pair)] += current($pair);
16
+ }
17
+
18
+ var_export($array2);
19
+ ```
20
+
21
+ ----
22
+
23
+ 【別解】 最初から埋めておくのもあり
24
+
25
+ ```php
26
+ <?php
27
+
28
+ $array = [
29
+ [1 => 2],
30
+ [2 => 3],
31
+ [3 => 3],
32
+ [1 => 5],
33
+ [2 => 6],
34
+ ];
35
+
12
36
  $array2 = array_fill_keys(array_map('key', $array), 0);
13
37
  foreach ($array as $pair) {
14
38
  $array2[key($pair)] += current($pair);

1

変更

2017/04/22 14:32

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -1,5 +1,3 @@
1
- PHP7.x向け
2
-
3
1
  ```php
4
2
  <?php
5
3
 
@@ -11,9 +9,9 @@
11
9
  [2 => 6],
12
10
  ];
13
11
 
14
- $array2 = [];
12
+ $array2 = array_fill_keys(array_map('key', $array), 0);
15
13
  foreach ($array as $pair) {
16
- $array2[key($pair)] = ($array2[key($pair)] ?? 0) + current($pair);
14
+ $array2[key($pair)] += current($pair);
17
15
  }
18
16
 
19
17
  var_export($array2);