[PHP] csv ファイルを連想配列に読み込む

function parse_csv( $csv_file, $title_row = -1, $start_row = 0, $key_cal = -1, $length = 0, $delimiter = ',', $enclosure = '"' ) {
    $results = FALSE;

    if ( file_exists($csv_file) && ($fp = fopen($csv_file, 'r')) ) {
        $row = 0;
        $results  = array();
        $col_name = array();
        while ( $field_array = fgetcsv($fp, $length, $delimiter, $enclosure) ) {
            if ( $row === $title_row ) {
                $col = 0;
                foreach ($field_array as $value) {
                    $col_name[$col] = !empty($value) ? $value : $col;
                    $col++;
                }
            }
            if ( $row >= $start_row ) {
                $result = array();
                $col = 0;
                foreach ($field_array as $value) {
                    $key = isset($col_name[$col]) ? $col_name[$col] : $col;
                    $result[$key] = $value;
                    $col++;
                }

                $key = $row;
                if ( is_numeric($key_cal) ) {
                    $key =
                        ( $key_cal >= 0 && isset($col_name[$key_cal]) )
                        ? $result[$col_name[$key_cal]]
                        : $row;
                } else {
                    foreach ($col_name as $value) {
                        if ( $key_cal === $value ) {
                            $key = $result[$value];
                            break;
                        }
                    }
                }
                $results[$key] = $result;
            }
            $row++;
        }
        fclose($fp);
    }

    return $results;
}

Posted

in

by

Tags:

Comments

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。