質問編集履歴

1 コードの追加

kazoogon

kazoogon score 274

2018/09/27 20:44  投稿

csvのheaderが無い列を削除する方法 (PHP)
```
項目1,項目2,,項目3,項目4
jhon,USA,1,man,yes
maria,ENG,2,woman,no
ewa,SPA,3,woman,yes
```
というcsvをPHPの処理で「headerが空の列を削除」させ
```
項目1,項目2,項目3,項目4
jhon,USA,man,yes
maria,ENG,woman,no
ewa,SPA,woman,yes
```
このようにしたいと思っております。
行の削除は調べたら出てくるのですが、列の削除が意外と見つからなかったので質問させていただきました。
よろしくお願いいたします。
よろしくお願いいたします。
コード追加
---
①ヘッダーが空のindexを抽出
②ヘッダーが空の列はヘッダー含め削除
の順序で実装
```
$fp = new SplFileObject('test.csv');
$fp->setFlags(SplFileObject::READ_CSV);
$data = array();
foreach ($fp as $line) {
   $data[] = $line;
}
//ヘッダー空のindex取得
$empty_column_index = array();
foreach($data[0] as $i => $header) {
   if($header == "") {
       $empty_column_index[] = $i;
   }
}
foreach($data as $row) {
   //ヘッダー空の列は削除
  //Warning: Illegal offset type in unsetのエラー
   unset($row[$empty_column_index]);
   
   //indexを詰める
   $target = array_values($target);
}
var_dump($target);
```
コード内にも記載しましたが、unsetにて複数のカラムを削除しようとする
 →変数をそのまま入れてもエラーとなる
ここでどのように書けば良いのか不明です。。
よろしくお願いいたします
  • PHP

    31172 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CSV

    1561 questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る