LoginSignup
1

More than 5 years have passed since last update.

【PHP】インポートするCSVのヘッダがテーブルのカラムと同じかチェックを行う処理

Last updated at Posted at 2018-03-13

CSVインポート処理とか作るじゃないですか

作るじゃないですか。
というか作らざるを得ない場合があるじゃないですか。
そういう時、登録する前にCSVファイルをあらゆる方向からチェックする必要があると思うので、
取り急ぎ、読み込まれたCSVファイルのヘッダがまずもって想定しているフォーマット通りなのかをチェックする処理を実装してみます。

CSVヘッダとテーブルのカラムが同じかをチェックする処理の実装

※前提としてCSVヘッダと登録するテーブルのカラムが同じの場合を想定しています。

引数$csvHeaders$columnsには項目名を入れた配列を渡してやる。


/**
 * テーブルのカラムとCSVヘッダとが等しいかのチェック処理
 *  
 * @param array $columns
 * @param array $csvHeaders
 * @return bool
 */
public function isRegisterableThisCsvFile(array $csvHeaders, array $columns)
{
    sort($csvHeaders);
    sort($columns);
    return ($columns === $csvHeaders);
}

からくりとしては配列をそれぞれソートして最後に比較し、両方とも全く同じであればtrueを返す、ということをしてます。

おわり

  • この処理以外にもデータの中身が登録値として正しいかチェックする処理も必要ですな(バリデーション)
  • CSVインポート機能って、社内システムとか身内のみ使う想定ならいいけど、toCのサービスとかだと、実装時に胸焼けしそう

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1