PHPからのcsvファイル読み込みについて質問です。


$line = file_get_contents("aas.csv");

上記のように指定したcsvを読み込むと中身のすべてを読み込むのですが、
これを指定した行数だけ読み込み変数に入れたいです。

どのような方法があるかご指南お願いいたします。

回答の条件
  • 1人5回まで
  • 登録:2012/02/04 13:05:49
  • 終了:2012/02/11 13:10:03

ベストアンサー

id:uwao No.3

uwao回答回数171ベストアンサー獲得回数362012/02/04 19:10:38

ポイント66pt

やはり読み込んだ後に別の配列にした方が良いと思います。
こんな感じででどうでしょう。
 
$datacnt = 100;
$datafile = 'data.csv';
$data = file($datafile);
$r_cnt = 0;
$hoge = array();
foreach($data as $data_){
if($data_ && $r_cnt < $datacnt){
array_push($hoge,$data_);
}
$r_cnt++;
}
print_r($hoge);

その他の回答(2件)

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932012/02/04 13:21:45

ポイント67pt

fgetcsvでcsvを配列で取得して、array_sliceかarray_spliceで必要な分だけ切り出す方法ではだめですか?

PHP: fgetcsv - Manual
PHP: array_slice - Manual
PHP: array_splice - Manual




fgetsで一行ずつ読む。
PHP: fgets - Manual

id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202012/02/04 13:26:23

ポイント67pt

getCSVは、ファイル$fname先頭から$num行目までを配列$varに代入します。
配列の構造は2次元で
 $var[行番号][列番号]
となります。

<?php
$nums  = 10;            //行数指定
$fname = 'aas.csv';     //ファイル名

//先頭から指定行数だけ変数$varに代入する
function getCSV($fname, $nums, &$var) {
    $fp = fopen($fname, 'r');
    if ($fp == FALSE)   return FALSE;
    for ($i = 0; $i < $nums; $i++) {
        $arr = fgetcsv($fp, 9999, ',');
        for ($key = 0; $key < count($arr); $key++)
            $var[$i][$key] = $arr[$key];
    }
    fclose($fp);
    return $i;
}

$var = array();
getCSV($fname, $nums, $var);
var_dump($var);
?>
id:uwao No.3

uwao回答回数171ベストアンサー獲得回数362012/02/04 19:10:38ここでベストアンサー

ポイント66pt

やはり読み込んだ後に別の配列にした方が良いと思います。
こんな感じででどうでしょう。
 
$datacnt = 100;
$datafile = 'data.csv';
$data = file($datafile);
$r_cnt = 0;
$hoge = array();
foreach($data as $data_){
if($data_ && $r_cnt < $datacnt){
array_push($hoge,$data_);
}
$r_cnt++;
}
print_r($hoge);

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません