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

回答編集履歴

2

三項演算子で書き直し

2019/02/20 05:37

投稿

退会済みユーザー
answer CHANGED
@@ -14,21 +14,12 @@
14
14
  );
15
15
  $result = array();
16
16
 
17
- foreach ($data as $key => $value) {
17
+ foreach ($data as $key => $value)
18
- if (array_key_exists($key, $result)) {
18
+ empty($result[$key]) ? $result[$key] = $value : $result[$key] += $value;
19
- $result[$key] += $value;
20
- } else {
21
- $result[$key] = $value;
22
- }
23
- }
24
- foreach ($data2 as $key => $value) {
25
- if (array_key_exists($key, $result)) {
26
- $result[$key] += $value;
27
- } else {
28
- $result[$key] = $value;
29
- }
30
- }
31
19
 
20
+ foreach ($data2 as $key => $value)
21
+ empty($result[$key]) ? $result[$key] = $value : $result[$key] += $value;
22
+
32
23
  print_r($result);
33
24
  ```
34
25
 
@@ -50,15 +41,9 @@
50
41
  $result = array();
51
42
 
52
43
  foreach (array($data, $data2) as $arr)
53
- foreach ($arr as $key => $value) {
44
+ foreach ($arr as $key => $value)
54
- if (array_key_exists($key, $result)) {
45
+ empty($result[$key]) ? $result[$key] = $value : $result[$key] += $value;
55
- $result[$key] += $value;
56
- } else {
57
- $result[$key] = $value;
58
- }
59
- }
60
46
 
61
-
62
47
  print_r($result);
63
48
  ```
64
49
  とか。

1

加筆修正

2019/02/20 05:37

投稿

退会済みユーザー
answer CHANGED
@@ -30,4 +30,35 @@
30
30
  }
31
31
 
32
32
  print_r($result);
33
- ```
33
+ ```
34
+
35
+ おんなじコードを繰り返すのも芸がないので、
36
+
37
+ ```php
38
+ <?php
39
+
40
+ $data = array(
41
+ 'a' => 1,
42
+ 'b' => 2,
43
+ 'c' => 1,
44
+ );
45
+ $data2 = array(
46
+ 'a' => 1,
47
+ 'b' => 2,
48
+ 'c' => 3,
49
+ );
50
+ $result = array();
51
+
52
+ foreach (array($data, $data2) as $arr)
53
+ foreach ($arr as $key => $value) {
54
+ if (array_key_exists($key, $result)) {
55
+ $result[$key] += $value;
56
+ } else {
57
+ $result[$key] = $value;
58
+ }
59
+ }
60
+
61
+
62
+ print_r($result);
63
+ ```
64
+ とか。