質問編集履歴

1

コードの追加

2018/09/27 11:44

投稿

kazoogon
kazoogon

スコア281

test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,81 @@
31
31
  行の削除は調べたら出てくるのですが、列の削除が意外と見つからなかったので質問させていただきました。
32
32
 
33
33
  よろしくお願いいたします。
34
+
35
+
36
+
37
+ コード追加
38
+
39
+ ---
40
+
41
+ ①ヘッダーが空のindexを抽出
42
+
43
+ ②ヘッダーが空の列はヘッダー含め削除
44
+
45
+ の順序で実装
46
+
47
+ ```
48
+
49
+ $fp = new SplFileObject('test.csv');
50
+
51
+ $fp->setFlags(SplFileObject::READ_CSV);
52
+
53
+
54
+
55
+ $data = array();
56
+
57
+
58
+
59
+ foreach ($fp as $line) {
60
+
61
+ $data[] = $line;
62
+
63
+ }
64
+
65
+
66
+
67
+ //ヘッダー空のindex取得
68
+
69
+ $empty_column_index = array();
70
+
71
+ foreach($data[0] as $i => $header) {
72
+
73
+ if($header == "") {
74
+
75
+ $empty_column_index[] = $i;
76
+
77
+ }
78
+
79
+ }
80
+
81
+
82
+
83
+ foreach($data as $row) {
84
+
85
+ //ヘッダー空の列は削除
86
+
87
+   //Warning: Illegal offset type in unsetのエラー
88
+
89
+ unset($row[$empty_column_index]);
90
+
91
+
92
+
93
+ //indexを詰める
94
+
95
+ $target = array_values($target);
96
+
97
+ }
98
+
99
+ var_dump($target);
100
+
101
+ ```
102
+
103
+ コード内にも記載しましたが、unsetにて複数のカラムを削除しようとする
104
+
105
+  →変数をそのまま入れてもエラーとなる
106
+
107
+ ここでどのように書けば良いのか不明です。。
108
+
109
+
110
+
111
+ よろしくお願いいたします