fgetcsvでcsvを配列で取得して、array_sliceかarray_spliceで必要な分だけ切り出す方法ではだめですか?
PHP: fgetcsv - Manual
PHP: array_slice - Manual
PHP: array_splice - Manual
fgetsで一行ずつ読む。
PHP: fgets - Manual
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); ?>
▽3
●
uwao ●66ポイント ベストアンサー |
やはり読み込んだ後に別の配列にした方が良いと思います。
こんな感じででどうでしょう。
$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);