回答編集履歴
8
追記
answer
CHANGED
@@ -44,3 +44,7 @@
|
|
44
44
|
|
45
45
|
- PHP5.4以降では`array()`よりも`[]`を使うべきです
|
46
46
|
- PHP5.6以降では`call_user_func_array()`よりも`...`を使うべきです
|
47
|
+
|
48
|
+
PHPは関数型言語ではないので,無理にforeachを排除してコールバック関数だらけにすると読みにくくてしょうがなくなったりするんですが,今回は組み込み関数が `array_merge_recursive` `array_sum` と2つも生かせるので,こういう場合には `array_map` を使うのもアリでしょう.
|
49
|
+
|
50
|
+
[初心者を戒めるPHP (そんなにarray_mapが書きたいか?) - Qiita](http://qiita.com/tadsan/items/fb496e450fc27c8c4494#%E3%81%9D%E3%82%93%E3%81%AA%E3%81%ABarray_map%E3%81%8C%E6%9B%B8%E3%81%8D%E3%81%9F%E3%81%84%E3%81%8B)
|
7
5\.3でも動くコードを追加
answer
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
せっかくなのでPHPの関数を生かした短い別解を書いておきます
|
1
|
+
せっかくなのでPHPの関数を生かした短い別解を書いておきます
|
2
2
|
|
3
|
+
### PHP5.6以降で動作
|
4
|
+
|
3
5
|
```php
|
4
6
|
<?php
|
5
7
|
|
@@ -19,4 +21,26 @@
|
|
19
21
|
var_dump($results);
|
20
22
|
```
|
21
23
|
|
24
|
+
### PHP5.3以降で動作
|
25
|
+
|
26
|
+
```php
|
27
|
+
<?php
|
28
|
+
|
29
|
+
$groups = array(
|
30
|
+
array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4),
|
31
|
+
array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8),
|
32
|
+
array('red' => 4, 'blue' => 6, 'yellow' => 7, 'cyan' => 8),
|
33
|
+
array('green' => 5, 'green' => 6, 'yellow' => 7, 'cyan' => 3),
|
34
|
+
array('green' => 5, 'blue' => 6, 'green' => 7, 'cyan' => 5),
|
35
|
+
);
|
36
|
+
|
37
|
+
$results = array_map(
|
38
|
+
function ($row) { return array_sum((array)$row); },
|
39
|
+
$groups ? call_user_func_array('array_merge_recursive', $groups) : array()
|
40
|
+
);
|
41
|
+
|
42
|
+
var_dump($results);
|
43
|
+
```
|
44
|
+
|
22
|
-
|
45
|
+
- PHP5.4以降では`array()`よりも`[]`を使うべきです
|
46
|
+
- PHP5.6以降では`call_user_func_array()`よりも`...`を使うべきです
|
6
5\.4
answer
CHANGED
@@ -17,4 +17,6 @@
|
|
17
17
|
);
|
18
18
|
|
19
19
|
var_dump($results);
|
20
|
-
```
|
20
|
+
```
|
21
|
+
|
22
|
+
蛇足: PHP5.4以降では`array()`よりも`[]`を使うべきです
|
5
mistake
answer
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
$results = array_map(
|
15
15
|
function ($row) { return array_sum((array)$row); },
|
16
|
-
|
16
|
+
$groups ? array_merge_recursive(...$groups) : []
|
17
17
|
);
|
18
18
|
|
19
19
|
var_dump($results);
|
4
mistake
answer
CHANGED
File without changes
|
3
version
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
せっかくなのでPHPの関数を生かした短い別解を書いておきます
|
1
|
+
せっかくなのでPHPの関数を生かした短い別解を書いておきます **(PHP5.6以降で動作)**
|
2
2
|
|
3
3
|
```php
|
4
4
|
<?php
|
2
例外処理
answer
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
$results = array_map(
|
15
15
|
function ($row) { return array_sum((array)$row); },
|
16
|
-
array_merge_recursive(...$groups)
|
16
|
+
array_merge_recursive($groups ? ...$groups : [])
|
17
17
|
);
|
18
18
|
|
19
19
|
var_dump($results);
|
1
スペース
answer
CHANGED
@@ -11,7 +11,6 @@
|
|
11
11
|
['green' => 5, 'blue' => 6, 'green' => 7, 'cyan' => 5],
|
12
12
|
];
|
13
13
|
|
14
|
-
|
15
14
|
$results = array_map(
|
16
15
|
function ($row) { return array_sum((array)$row); },
|
17
16
|
array_merge_recursive(...$groups)
|