2

このトピックに関する質問を探しましたが、探しているものが見つかりませんでした。これは C++ 用です。PHPにも同様のものが必要です。これはphpファイルを含めるためのものです。CSVファイルを読みたいだけです。

私はこれを持っています:

if(file_exists("data.csv")){
    echo "CSV file found";

    $csv_data = file_get_contents("data.csv"); 

    $lines = explode("\n", trim($csv_data));   

    $array = array();

    foreach ($lines as $line){
            $array[] = str_getcsv($line);

}else {echo "File not found";}

しかし、ファイル名を指定したくありません。つまり、一般的にファイルをロード/読み取り/オープンします。

それを行う簡単な理由はありますか?意味がありませんが、PHP スクリプトに何もハードコーディングしないように言われました。

前もって感謝します。

4

3 に答える 3

3

使用するfgetcsv

if(file_exists("data.csv")){
    echo "CSV file found";
    $handle = fopen("data.csv", "r");
    if(!$handle) die("Could not open file!");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
      $num = count($data);
      $row++;
      for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
      }
    }
    fclose($handle); 

}else {echo "File not found";}
于 2012-08-29T14:13:29.943 に答える
2

スクリプトにハードコードされたものがない場合は、それらのハードコードされたものを何らかの外部構成ファイルに入れる必要があります。その構成ファイルの名前をブートストラップまたはアプリケーションで最初に来るものにハードコーディングする必要があります。構成がロードされたら、必要な場所で構成データを使用できるようにします。構成データをコードにハードコーディングしないと、より再利用可能なコンポーネントとコードを作成できます。たとえば、ハードコードされた特定の CSV ファイルのみを読み取ることができる CSV リーダーではなく、任意のCSV ファイルを読み取ることができる CSV リーダーです。

例:

// config.php
<?php
return array(
    'csvFile' => '/path/to/file.csv',
    …
);

// bootstrap.php
<?php
$config = include '/path/to/config.php';
…

// someFile.php
<?php
include '/path/to/bootstrap.php';
$file = new SplFileObject($config['csvFile']);
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
   // Do something with values
}
于 2012-08-29T14:22:17.513 に答える
2

コードを関数に入れます...

function open_file($file_name)
{
    if (!file_exists($file_name))
    {
        return false;
    }

    $csv_data = file_get_contents($file_name);
    $lines = explode("\n", trim($csv_data));

    $array = array();
    foreach ($lines as $line)
    {
        $array[] = str_getcsv($line);
    }

    return $array;
}
于 2012-08-29T14:12:52.207 に答える