質問編集履歴

4

誤字

2020/02/25 03:57

投稿

natsunoomoide
natsunoomoide

スコア8

test CHANGED
File without changes
test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
 
58
58
 
59
- $result1 = [
59
+ $result2 = [
60
60
 
61
61
  ['val'=>'a1','date'=>'2020-02-25 01:00:00'],
62
62
 

3

実現したいことと該当のソースコードを修正

2020/02/25 03:57

投稿

natsunoomoide
natsunoomoide

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ###実現したいこと
2
2
 
3
- 1.`$arr`と`$new`を比較し、`val`が同じ値なら`date`を更新したい。
3
+ 1.`$arr`と`$new`を比較し、`val`が同じ値なら`date`を更新し、同じ値でなければ追加したい。
4
4
 
5
5
  2.`$arr`は最大4件までとしたい。
6
6
 
@@ -12,11 +12,7 @@
12
12
 
13
13
  ###該当のソースコード
14
14
 
15
- `$new`の`val`と同じ値が`$arr`にあるので、その`date`を更新して`$result1`を得るのが目的です。
16
-
17
-
18
-
19
- してもしできれば最新の4件でとし、古いものは削除したいです。
15
+ まず元からある配列として`$arr`があります。
20
16
 
21
17
  ```PHP
22
18
 
@@ -30,16 +26,16 @@
30
26
 
31
27
  ];
32
28
 
33
-
29
+ ```
30
+
31
+ 次の`$new`が与えられた場合、`val`と同じ値が`$arr`にあるので、その`date`を更新して`$result1`を得るのが目的です。
32
+
33
+ ```PHP
34
34
 
35
35
  $new = ['val'=>'a2','date'=>'2020-02-25 04:00:00'];
36
36
 
37
37
 
38
38
 
39
- // ↓ 上の$arrと$newから、以下$result1を得たい
40
-
41
-
42
-
43
39
  $result1 = [
44
40
 
45
41
  ['val'=>'a1','date'=>'2020-02-25 01:00:00'],
@@ -50,9 +46,33 @@
50
46
 
51
47
  ];
52
48
 
53
-
54
-
55
- ```
49
+ ```
50
+
51
+ もし$newが次の場合、$arrに同じ値がないので、普通に追加して以下$result2を得たいです。
52
+
53
+ ```PHP
54
+
55
+ $new = ['val'=>'a4','date'=>'2020-02-25 04:00:00'];
56
+
57
+
58
+
59
+ $result1 = [
60
+
61
+ ['val'=>'a1','date'=>'2020-02-25 01:00:00'],
62
+
63
+ ['val'=>'a2','date'=>'2020-02-25 02:00:00'],
64
+
65
+ ['val'=>'a3','date'=>'2020-02-25 03:00:00'],
66
+
67
+ ['val'=>'a4','date'=>'2020-02-25 04:00:00'] // 普通に追加
68
+
69
+ ];
70
+
71
+ ```
72
+
73
+ ここまでは1の処理です。もしできれば2の処理として最新の4件までとし、古いものは削除したいのですが、これは文末に「2のロジック」として追記させて頂きました。(あちこち飛んで申し訳ございません。)
74
+
75
+
56
76
 
57
77
  ###発生している問題(1について)
58
78
 

2

$resultの番号を修正

2020/02/25 03:56

投稿

natsunoomoide
natsunoomoide

スコア8

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ###該当のソースコード
14
14
 
15
- `$new`の`val`と同じ値が`$arr`にあるので、その`date`を更新して`$result`を得るのが目的です。
15
+ `$new`の`val`と同じ値が`$arr`にあるので、その`date`を更新して`$result1`を得るのが目的です。
16
16
 
17
17
 
18
18
 
@@ -36,11 +36,11 @@
36
36
 
37
37
 
38
38
 
39
- // ↓ 上の$arrと$newから、以下$resultを得たい
39
+ // ↓ 上の$arrと$newから、以下$result1を得たい
40
-
41
-
42
-
40
+
41
+
42
+
43
- $result = [
43
+ $result1 = [
44
44
 
45
45
  ['val'=>'a1','date'=>'2020-02-25 01:00:00'],
46
46
 
@@ -170,8 +170,6 @@
170
170
 
171
171
  PHP Warning: array_keys() expects parameter 1 to be array, null given in /aaa/bbb.php on line 0
172
172
 
173
-
174
-
175
173
  */
176
174
 
177
175
  ```
@@ -194,15 +192,15 @@
194
192
 
195
193
 
196
194
 
197
- 以下の場合`$new`の`val`は`$arr`のどれとも一致しないので、1を介して`$arr`に普通に追加されることになり`$result`がまず得られます。
195
+ 以下の場合`$new`の`val`は`$arr`のどれとも一致しないので、1を介して`$arr`に普通に追加されることになり`$result2`がまず得られます。
198
-
199
-
200
-
196
+
197
+
198
+
201
- しかしその結果5件になるので、その5件から古いものを削除し`$result2`を得たいということを考えています。これが2の処理です。
199
+ しかしその結果5件になるので、その5件から古いものを削除し`$result3`を得たいということを考えています。これが2の処理です。
202
-
203
-
204
-
200
+
201
+
202
+
205
- (自分がわかりやすいので1と2の処理に分けていますが、欲しいのは`$result2`だけで、`$result`の方は不要です。)
203
+ (自分がわかりやすいので1と2の処理に分けていますが、欲しいのは`$result3`だけで、その過程にある`$result1`や`$result2`の方は不要です。)
206
204
 
207
205
  ```PHP
208
206
 
@@ -224,11 +222,11 @@
224
222
 
225
223
 
226
224
 
227
- // ↓ 1の処理で$resultが得られる
225
+ // ↓ 1の処理で$result2が得られる
228
-
229
-
230
-
226
+
227
+
228
+
231
- $result = [
229
+ $result2 = [
232
230
 
233
231
  ['val'=>'a1','date'=>'2020-02-25 01:00:00'],
234
232
 
@@ -244,11 +242,11 @@
244
242
 
245
243
 
246
244
 
247
- // ↓ 2の処理で古いものを削除し以下$result2を得たい
245
+ // ↓ 2の処理で古いものを削除し以下$result3を得たい
248
-
249
-
250
-
246
+
247
+
248
+
251
- $result2 = [
249
+ $result3 = [
252
250
 
253
251
  ['val'=>'a2','date'=>'2020-02-25 02:00:00'],
254
252
 

1

2のロジックを追記

2020/02/25 03:38

投稿

natsunoomoide
natsunoomoide

スコア8

test CHANGED
File without changes
test CHANGED
@@ -185,3 +185,81 @@
185
185
  ###バージョン
186
186
 
187
187
  PHP 7.2.13 です。
188
+
189
+
190
+
191
+ ###2のロジック
192
+
193
+ 2のロジックについてご説明させて頂きます。
194
+
195
+
196
+
197
+ 以下の場合`$new`の`val`は`$arr`のどれとも一致しないので、1を介して`$arr`に普通に追加されることになり`$result`がまず得られます。
198
+
199
+
200
+
201
+ しかしその結果5件になるので、その5件から古いものを削除し`$result2`を得たいということを考えています。これが2の処理です。
202
+
203
+
204
+
205
+ (自分がわかりやすいので1と2の処理に分けていますが、欲しいのは`$result2`だけで、`$result`の方は不要です。)
206
+
207
+ ```PHP
208
+
209
+ $arr = [
210
+
211
+ ['val'=>'a1','date'=>'2020-02-25 01:00:00'],
212
+
213
+ ['val'=>'a2','date'=>'2020-02-25 02:00:00'],
214
+
215
+ ['val'=>'a3','date'=>'2020-02-25 03:00:00'],
216
+
217
+ ['val'=>'a4','date'=>'2020-02-25 04:00:00']
218
+
219
+ ];
220
+
221
+
222
+
223
+ $new = ['val'=>'a5','date'=>'2020-02-25 05:00:00'];
224
+
225
+
226
+
227
+ // ↓ 1の処理で$resultが得られる
228
+
229
+
230
+
231
+ $result = [
232
+
233
+ ['val'=>'a1','date'=>'2020-02-25 01:00:00'],
234
+
235
+ ['val'=>'a2','date'=>'2020-02-25 02:00:00'],
236
+
237
+ ['val'=>'a3','date'=>'2020-02-25 03:00:00'],
238
+
239
+ ['val'=>'a4','date'=>'2020-02-25 04:00:00'],
240
+
241
+ ['val'=>'a5','date'=>'2020-02-25 05:00:00']
242
+
243
+ ];
244
+
245
+
246
+
247
+ // ↓ 2の処理で古いものを削除し以下$result2を得たい
248
+
249
+
250
+
251
+ $result2 = [
252
+
253
+ ['val'=>'a2','date'=>'2020-02-25 02:00:00'],
254
+
255
+ ['val'=>'a3','date'=>'2020-02-25 03:00:00'],
256
+
257
+ ['val'=>'a4','date'=>'2020-02-25 04:00:00'],
258
+
259
+ ['val'=>'a5','date'=>'2020-02-25 05:00:00']
260
+
261
+ ];
262
+
263
+
264
+
265
+ ```