質問編集履歴

7

追記いたしましたーーーー。

2021/05/27 07:55

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
  $log2 = fopen("log.txt", "w");
116
116
 
117
- @fwrite($log2, $log1);
117
+ fwrite($log2, $log1);
118
118
 
119
119
  fclose($log2);
120
120
 
@@ -139,3 +139,13 @@
139
139
 
140
140
 
141
141
  となりました。
142
+
143
+
144
+
145
+ 回答を受けて、エラーが出たので確認すると、
146
+
147
+ fwrite() expects parameter 2 to be string,
148
+
149
+ とのことでした、引数2が文字型でないといけないということですが、
150
+
151
+ 二重配列なんですが、どうすればいいんでしょうか・・・。

6

追記をいたしました。

2021/05/27 07:55

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -127,3 +127,15 @@
127
127
  Array ( [0] => Array ( [0] => 10 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 [7] => 6 [8] => 70 [9] => 8 [10] => 9 ) [1] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 30 [5] => 4 [6] => 5 [7] => 6 [8] => 7 [9] => 9 [10] => 9 ) [2] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 20 [4] => 3 [5] => 40 [6] => 5 [7] => 6 [8] => 7 [9] => 8 [10] => 9 ) [3] => Array ( [0] => 1 [1] => 10 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 [7] => 60 [8] => 7 [9] => 8 [10] => 9 ) [4] => Array ( [0] => 1 [1] => 1 [2] => 10 [3] => 2 [4] => 3 [5] => 4 [6] => 50 [7] => 6 [8] => 7 [9] => 8 [10] => 9 ) )
128
128
 
129
129
  となり、log.txtの中が初期化されてしまいます、なぜでしょう。
130
+
131
+
132
+
133
+ ちなみに、var_dumpすると、shuffleしてることから番号が乱雑になってますが、
134
+
135
+
136
+
137
+ array(5) { [0]=> array(11) { [0]=> string(2) "10" [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(1) "2" [4]=> string(1) "3" [5]=> string(1) "4" [6]=> string(1) "5" [7]=> string(1) "6" [8]=> string(2) "70" [9]=> string(1) "8" [10]=> string(3) "9 " } [1]=> array(11) { [0]=> string(1) "1" [1]=> string(2) "10" [2]=> string(1) "1" [3]=> string(1) "2" [4]=> string(1) "3" [5]=> string(1) "4" [6]=> string(1) "5" [7]=> string(2) "60" [8]=> string(1) "7" [9]=> int(9) [10]=> string(3) "9 " } [2]=> array(11) { [0]=> string(1) "1" [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(1) "2" [4]=> string(2) "30" [5]=> string(1) "4" [6]=> string(1) "5" [7]=> string(1) "6" [8]=> string(1) "7" [9]=> string(1) "8" [10]=> string(1) "9" } [3]=> array(11) { [0]=> string(1) "1" [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(2) "20" [4]=> string(1) "3" [5]=> string(2) "40" [6]=> string(1) "5" [7]=> string(1) "6" [8]=> string(1) "7" [9]=> string(1) "8" [10]=> string(3) "9 " } [4]=> array(11) { [0]=> string(1) "1" [1]=> string(1) "1" [2]=> string(2) "10" [3]=> string(1) "2" [4]=> string(1) "3" [5]=> string(1) "4" [6]=> string(2) "50" [7]=> string(1) "6" [8]=> string(1) "7" [9]=> string(1) "8" [10]=> string(3) "9 " } }
138
+
139
+
140
+
141
+ となりました。

5

追記、いたしましたー。

2021/05/27 07:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -103,3 +103,27 @@
103
103
 
104
104
 
105
105
  すいませんfile_put_contentsじゃないですね、上書きだから、これだと追記になるんでしたっけ。
106
+
107
+
108
+
109
+ ```php
110
+
111
+ print_r($log1);
112
+
113
+
114
+
115
+ $log2 = fopen("log.txt", "w");
116
+
117
+ @fwrite($log2, $log1);
118
+
119
+ fclose($log2);
120
+
121
+ ```
122
+
123
+
124
+
125
+ これを実行すると、出力結果が
126
+
127
+ Array ( [0] => Array ( [0] => 10 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 [7] => 6 [8] => 70 [9] => 8 [10] => 9 ) [1] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 30 [5] => 4 [6] => 5 [7] => 6 [8] => 7 [9] => 9 [10] => 9 ) [2] => Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 20 [4] => 3 [5] => 40 [6] => 5 [7] => 6 [8] => 7 [9] => 8 [10] => 9 ) [3] => Array ( [0] => 1 [1] => 10 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 [7] => 60 [8] => 7 [9] => 8 [10] => 9 ) [4] => Array ( [0] => 1 [1] => 1 [2] => 10 [3] => 2 [4] => 3 [5] => 4 [6] => 50 [7] => 6 [8] => 7 [9] => 8 [10] => 9 ) )
128
+
129
+ となり、log.txtの中が初期化されてしまいます、なぜでしょう。

4

追記しましたー。

2021/05/27 07:21

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -89,3 +89,17 @@
89
89
  $c[$b][6]++;このデータだけ、+1して、ここだけ直して元に戻したいわけです。
90
90
 
91
91
  二次元配列だとArrayになる?ということですが、以上の事を簡単なコードでなすには、どのようにすれば良いのでしょう?
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ $cにはlog.txtを二次元配列として格納したデータを入れています。
100
+
101
+ n行m列目を、a[n][m]にしてる感じです(区切りは.)。
102
+
103
+
104
+
105
+ すいませんfile_put_contentsじゃないですね、上書きだから、これだと追記になるんでしたっけ。

3

回答を受けた上での編集

2021/05/27 02:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -67,3 +67,25 @@
67
67
  部分的に編集どころか、複数行複数列あったデータが、1行の意味のないものになってしまいました、
68
68
 
69
69
  どのように変更すれば、部分的に編集できるのでしょうか。
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ 回答を受けて。
80
+
81
+ $cは二次元配列ですね、簡単にはここに元のテキストの全データが入っています。
82
+
83
+
84
+
85
+ で、そのデータの内、
86
+
87
+
88
+
89
+ $c[$b][6]++;このデータだけ、+1して、ここだけ直して元に戻したいわけです。
90
+
91
+ 二次元配列だとArrayになる?ということですが、以上の事を簡単なコードでなすには、どのようにすれば良いのでしょう?

2

追記いたしましたー。

2021/05/27 02:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -19,3 +19,51 @@
19
19
  自分がやりたいのは、そのデータのある行のある列の値を変えた状態で、上書き保存をすることです。
20
20
 
21
21
  それはいかにして行うのでしょうか?
22
+
23
+
24
+
25
+ 例えば、POSTされたbという一次元の変数と、cという二重配列に対し、
26
+
27
+ 二重配列のb行目の6列目の値を1増やして、上書きしたいとします、以下のように。
28
+
29
+ ```php
30
+
31
+ <?php
32
+
33
+
34
+
35
+ if (isset($_POST['b'])){
36
+
37
+ $b = $_POST['b'];
38
+
39
+ $c = filter_input(INPUT_POST,"a",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
40
+
41
+
42
+
43
+ $file_name = "log.txt";
44
+
45
+ $c[$b][6]++;
46
+
47
+ file_put_contents($file_name, $c);
48
+
49
+ }
50
+
51
+
52
+
53
+ ?>
54
+
55
+ ```
56
+
57
+ しかし、このように書いた所、cの出力結果が、
58
+
59
+ ArrayArrayArrayArrayArrayArrayArray
60
+
61
+ となってしまいました、つまり、中身が
62
+
63
+ ArrayArrayArrayArrayArrayArrayArray
64
+
65
+ のデータになってしまったのです。
66
+
67
+ 部分的に編集どころか、複数行複数列あったデータが、1行の意味のないものになってしまいました、
68
+
69
+ どのように変更すれば、部分的に編集できるのでしょうか。

1

追記致しましたー。

2021/05/26 18:07

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- file( $file_name )の逆を行
1
+ file( $file_name )の逆を行い、かつある行のある列の値を変える。
test CHANGED
@@ -11,3 +11,11 @@
11
11
  することは、簡単にできるのでしょうか?やり方を教えて下さい。
12
12
 
13
13
  (逆、なので、1次元が行数、2次元が列数、みたいに)
14
+
15
+
16
+
17
+ で、それができたら、そのまま保存しても意味がないわけで、
18
+
19
+ 自分がやりたいのは、そのデータのある行のある列の値を変えた状態で、上書き保存をすることです。
20
+
21
+ それはいかにして行うのでしょうか?