2012-03-31 16 views
0

私はこのコードを既に解読している人がいるかどうか調べていますが、それは無駄であることが証明されています。私は、このPHPコードサンプルで何が起きているのかを理解するのに苦労しています。herePHPコードのサンプルを理解するのに問題があります

私は現在、まだので、私は誰かが私にクリーンな説明を与えることができます願っています全体としてのプログラミングとPHPに非常に新しいです(私は、ドキュメントを読んだが、私はまだ完全にコードを理解することができない)

私は現在、アップロードされたCSVファイルを配列に変換してデータベースに変換するプロジェクトに取り組んでいます。私は私の問題は本当にfgetcsv方法を理解することである、誰かが私を提供することができればと思います

例#1読むとCSVの内容全体が

<?php 
$row = 1; 
if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 
    } 
    fclose($handle); 
} 


?> 

ファイル印刷:サンプルコードは以下の通りです故障で本当に感謝します。

+1

['fgetcsv()'](http://php.net/fgetcsv)関数は、CSVファイルから各行を取得します。各行には、行内にいくつのフィールドが表示されているのかが表示され、行のすべてのフィールドがエコー表示されます。特定の機能について混乱している場合は、[PHP.net](http://php.net)で参照してください。 – animuson

答えて

3

$row = 1;

は、処理された行の最初の数を設定します。 (読み取り専用で)ファイルを開くために

if (($handle = fopen("test.csv", "r")) !== FALSE) {

試み、それができる場合にのみ継続。 (行の最大長は1,000文字とカンマであるフィールド区切り文字である)CSVの各ライン上

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

反復し、それは、インデックス付き配列として行を引き出すことができる場合にのみ、継続フィールドの。

$num = count($data);

行のフィールドの数を取得します。

echo "<p> $num fields in line $row: <br /></p>\n";

所与の行のフィールドの数を出力します。

$row++;

行番号をインクリメントします。

for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; }

行の各フィールドを反復し、その値を出力します。

fclose($handle);

ファイルを閉じます。

+0

おかげさまで、本当にありがとうございました。 – EGHDK

1

fgetcsvは行ごとにcsvを読み取ります。

これは、連想配列を返します。たとえば、csvに10列ある場合:

csv1、csv2、csv3、... csv10 $ data変数の各サイクルは、(csv1 => "value" 1 ... csv10-> 「value10」)

だからあなたのコード印刷が最初のCSVファイルの列

count($data) 

のnumが、その後、CSVから取られた行を反復処理し、すべての列を印刷するには、これは

for ($c=0; $c < $num; $c++) { 
     echo $data[$c] . "<br />\n"; 
    } 

値ファイルの各行に対して行われる

+0

良い説明もあります。とても有難い。 – EGHDK

関連する問題