質問編集履歴
2
2020-12-09 11:13追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
###実現したいこと
|
1
2
|
お世話になります。
|
2
3
|
`group`の値ごとにグループ化し、任意の連番を付けたいです。
|
3
4
|
|
@@ -26,6 +27,7 @@
|
|
26
27
|
];
|
27
28
|
|
28
29
|
```
|
30
|
+
###試していること
|
29
31
|
まず`foreach`でキーをつけるまではいいのですが、これではグループ化できません。
|
30
32
|
```php
|
31
33
|
/*
|
@@ -88,4 +90,34 @@
|
|
88
90
|
--------------*/
|
89
91
|
var_dump($result);
|
90
92
|
```
|
91
|
-
アドバイス宜しくお願い致します。
|
93
|
+
アドバイス宜しくお願い致します。
|
94
|
+
|
95
|
+
###2020-12-09 11:13追記
|
96
|
+
その後、以下のように二回`foreach`をかければできましたが、泥臭すぎる印象です。
|
97
|
+
```php
|
98
|
+
/*
|
99
|
+
グループ化
|
100
|
+
--------------*/
|
101
|
+
$grouped = [];
|
102
|
+
foreach ( $rows as $row ) {
|
103
|
+
$group = $row['group'];
|
104
|
+
$grouped[$group][] = $row;
|
105
|
+
}
|
106
|
+
|
107
|
+
/*
|
108
|
+
キーをつける
|
109
|
+
--------------*/
|
110
|
+
$result = [];
|
111
|
+
$i = 1;
|
112
|
+
foreach ( $grouped as $group => $array ) {
|
113
|
+
$key = 'key_' . $i;
|
114
|
+
$result[$key] = $array;
|
115
|
+
$i++;
|
116
|
+
}
|
117
|
+
|
118
|
+
/*
|
119
|
+
結果を確認
|
120
|
+
--------------*/
|
121
|
+
var_dump($result);
|
122
|
+
```
|
123
|
+
もう少しいい方法ありましたら宜しくお願い致します。
|
1
コメントアウトで説明を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,6 +28,9 @@
|
|
28
28
|
```
|
29
29
|
まず`foreach`でキーをつけるまではいいのですが、これではグループ化できません。
|
30
30
|
```php
|
31
|
+
/*
|
32
|
+
キーをつける
|
33
|
+
--------------*/
|
31
34
|
$result = [];
|
32
35
|
$i = 1;
|
33
36
|
foreach ( $rows as $row ) {
|
@@ -35,25 +38,42 @@
|
|
35
38
|
$result[$key][] = $row;
|
36
39
|
$i++;
|
37
40
|
}
|
41
|
+
|
42
|
+
/*
|
43
|
+
結果を確認
|
44
|
+
--------------*/
|
38
45
|
var_dump($result);
|
39
46
|
```
|
40
47
|
今度はグループ化しようと思うと、キーがつけられません。
|
41
48
|
```php
|
49
|
+
/*
|
50
|
+
グループ化
|
51
|
+
--------------*/
|
42
52
|
$result = [];
|
43
53
|
foreach ( $rows as $row ) {
|
44
54
|
$group = $row['group'];
|
45
55
|
$result[$group][] = $row;
|
46
56
|
}
|
57
|
+
|
58
|
+
/*
|
59
|
+
結果を確認
|
60
|
+
--------------*/
|
47
61
|
var_dump($result);
|
48
62
|
```
|
49
63
|
先にグループ化してからキーを振りなおすために以下やってみたのですが、`STEP4`で躓きました。
|
50
64
|
```php
|
51
|
-
|
65
|
+
/*
|
66
|
+
グループ化
|
67
|
+
--------------*/
|
52
68
|
$result = [];
|
53
69
|
foreach ( $rows as $row ) {
|
54
70
|
$group = $row['group'];
|
55
71
|
$result[$group][] = $row;
|
56
72
|
}
|
73
|
+
|
74
|
+
/*
|
75
|
+
キーをつける
|
76
|
+
--------------*/
|
57
77
|
// STEP1. array_values で0からになるが、1からにしたいので余分な値を先頭に一つ追加しておく
|
58
78
|
array_unshift($result,[]);
|
59
79
|
// STEP2. array_values でグループ名になっているキーを0からの連番にする
|
@@ -62,7 +82,10 @@
|
|
62
82
|
unset($result[0]);
|
63
83
|
// STEP4. 連番にプレフィックスを付けて「key_1」のようにする
|
64
84
|
extract($result, EXTR_PREFIX_ALL, 'key_');
|
85
|
+
|
65
|
-
/
|
86
|
+
/*
|
87
|
+
結果を確認
|
88
|
+
--------------*/
|
66
89
|
var_dump($result);
|
67
90
|
```
|
68
91
|
アドバイス宜しくお願い致します。
|