回答編集履歴

6

修正追記

2017/07/25 08:06

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -76,4 +76,18 @@
76
76
 
77
77
 
78
78
 
79
+ もし削除したい列が1つとかであればforeachしなくても指定列番を普通に削除するように記述すると良いです。
79
80
 
81
+ ```PHP
82
+
83
+ while (($data = fgetcsv($temp, 0, ",")) !== FALSE) {
84
+
85
+ unset($data[8]); //例示のデータだと日付部分
86
+
87
+ $csv[] = $data;
88
+
89
+ }
90
+
91
+ ```
92
+
93
+

5

修正

2017/07/25 08:06

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -38,7 +38,9 @@
38
38
 
39
39
 
40
40
 
41
- ** 質問に追加を受けての追記
41
+ 質問に追加を受けての追記
42
+
43
+ ---
42
44
 
43
45
 
44
46
 

4

追記

2017/07/25 08:03

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -37,3 +37,41 @@
37
37
  ```
38
38
 
39
39
 
40
+
41
+ ** 質問に追加を受けての追記
42
+
43
+
44
+
45
+ 全てのレコードで同じ列を削除したい場合はこんな感じに書くと良いです。
46
+
47
+
48
+
49
+ ```PHP
50
+
51
+ //削除したい列を定義
52
+
53
+ $delete_column = array(4,8,5);
54
+
55
+ //レコードの左端を0番目としてカウントしていって削除したい列番を列挙する
56
+
57
+
58
+
59
+ while (($data = fgetcsv($temp, 0, ",")) !== FALSE) {
60
+
61
+ foreach($delete_column as $col_num){
62
+
63
+ unset($data[$col_num]);
64
+
65
+ }
66
+
67
+ $csv[] = $data;
68
+
69
+ }
70
+
71
+ var_dump($csv);
72
+
73
+ ```
74
+
75
+
76
+
77
+

3

修正

2017/07/25 08:02

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -1,10 +1,14 @@
1
1
  提示の通りに入っているとしたら「女」がある行は2行目なので
2
+
3
+ ```PHP
2
4
 
3
5
  unset($csv[0]);
4
6
 
5
- ではなく
7
+
6
8
 
7
9
  unset($csv[1]);
10
+
11
+ ```
8
12
 
9
13
  ですね。
10
14
 
@@ -18,9 +22,9 @@
18
22
 
19
23
  補足:
20
24
 
21
- 0から始まる連番の配列を作る際は連番用の変数を作らなくても```配列名[]```とすることで0から連番にしてくれます。
25
+ 0から始まる連番の配列を作る際は連番用の変数を作らなくても```配列名[]```に情報を入れていくと0から連番にしてくれます。
22
26
 
23
- 下記のようにすることで変数「$key」も不要となるので、コードがよりすっきりしますよ。
27
+ 変数「$key」も不要となるので、コードがよりすっきりしますよ。
24
28
 
25
29
  ```PHP
26
30
 

2

修正

2017/07/25 06:09

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -13,3 +13,23 @@
13
13
  直後に削除する前提のデータを含む配列変数を作るというのは冗長な感じがしますし、一瞬とはいえ無駄なメモリを使っていることになります。
14
14
 
15
15
  いっそのことwhileの中で「女」を含んでいる行を読み飛ばすようにした方が良いのかなと思います。
16
+
17
+
18
+
19
+ 補足:
20
+
21
+ 0から始まる連番の配列を作る際は連番用の変数を作らなくても```配列名[]```とすることで0から連番にしてくれます。
22
+
23
+ 下記のようにすることで変数「$key」も不要となるので、コードがよりすっきりしますよ。
24
+
25
+ ```PHP
26
+
27
+ while (($data = fgetcsv($temp, 0, ",")) !== FALSE) {
28
+
29
+ $csv[] = $data;
30
+
31
+ }
32
+
33
+ ```
34
+
35
+

1

修正

2017/07/25 06:06

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -10,6 +10,6 @@
10
10
 
11
11
 
12
12
 
13
- 配列変数を作ってから削除というのは冗長な感じがしますし、一瞬とはいえ無駄なメモリを使っていることになります。
13
+ 直後に削除する前提のデータを含む配列変数を作というのは冗長な感じがしますし、一瞬とはいえ無駄なメモリを使っていることになります。
14
14
 
15
15
  いっそのことwhileの中で「女」を含んでいる行を読み飛ばすようにした方が良いのかなと思います。