人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

●質問者: numb08
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Cherenkov
●67ポイント

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

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




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


2 ● oil999
●67ポイント

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);

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ