2016-06-17 4 views
5

私は.csvファイルを持っています。一部のフィールドは空で、一部のフィールドにはカンマまたはドットがあります。配列内のcsvファイルを表示

ここで私はこのように配列で表示できますか?今のよう

Array (

[0] => Name1,[email protected],13,56475,,190000,,,remit,5-Mar-15,26250 

[1] => Name2,[email protected],11,11250,,22500,,,the bank,30-Apr-15,6250 

[2] => Name3,[email protected],15,,,1500,receipt,,the market,7-Mar-15,1750 

[3] =>Name4,[email protected],21,25500,,46750,receipt,,bank ,7-Mar-15,21350 .....) 

私はこのようにそれを表示することができます。

Array (

[0] => Name1 
[1] => [email protected] 
[2] => 13 
[3] => 56475 
[4] => 
[5] => 19000 
[6] => 
[7] => 
[8] => remit 
[9] => 5-Mar-15 
[10] => 26250) 


Array (
[0] => Name2 
[1] => [email protected] 
[2] => 11 
[3] => 11250 
[4] => 
[5] => 22500 
[6] => 
[7] => 
[8] => the bank 
[9] => 30-Apr-15 
[10] => 6250) .... 

そして、私はこのコードを使用しています:

$file = fopen("pay.csv","r"); 
while(! feof($file)) 
{ 
echo '<pre>',print_r(fgetcsv($file)),'</pre>'; 
} 
fclose($file); 

私はネイティブのcsv機能を使用して好みます。

+0

@Anant私はusiになります配列内のすべてのデータを比較するforeachループ –

+0

@Anant、はい、私は 'fgetcsv'などを使用したいと思います。私のフィールドのいくつかは空であり、コンマを持っています。 –

+0

@Anant、はい、それは多次元です。 –

答えて

2

これがあなたの期待する出力であれば、単にファイルを配列に解析するのにfile()メソッドを使うことができます。

$lines = file('file.csv'); 

foreach ($lines as $line_num => $line) { 
echo $line . '<br />'; 
} 
+0

ありがとう、フィールドとコンマが空白の場合はどうですか? –

+0

ストリップしたいですか? – Farkie

+0

私は 'file'の前にこれを試しましたが、私のcsvファイルのいくつかの行は配列に表示されません。 –

0

各値をコンマで区切って読み込みます。値が昏睡状態の場合は、 例 値B、C、値Aがある場合は として扱います.cssをB、C、Aと書くと、BCとAとして処理されます。 そのような問題を避ける。このような引用符または二重引用符として "B、C"、 ""

+0

あなたは正しいですが、どのように?サンプル参照? –

1

fgetcsv()はあなたの問題を解決することができます。..

fgetcsv()関数は、開いているファイルから行を解析し、エンクロージャを使用しますCSVフィールドをチェックします。

  • fgetcsv()関数は 指定した長さで、新しい行に戻し、停止、またはEOFで、どちらが最初に来ます。

  • この関数は、成功すると配列のCSVフィールドを返します。失敗した場合はFALSE を返し、EOFを返します。

構文

fgetcsv(ファイル、長さ、セパレータ、エンクロージャ)

  • ファイル必須。チェックするファイルを指定します。
  • 長さ:行の最大長を指定します。 CSVファイルの最長行(文字数)より大きくなければなりません。この パラメータを省略するか(または0に設定する)、行の長さは制限されません。 はわずかに遅くなります。

例:

<?php 
$file = fopen("contacts.csv","r"); 
print_r(fgetcsv($file)); 
fclose($file); 
?> 

CSVファイル:

Kai Jim, Refsnes, Stavanger, Norway 
Hege, Refsnes, Stavanger, Norway 

は、上記のコードの出力は次のようになります

Array 
(
[0] => Kai Jim 
[1] => Refsnes 
[2] => Stavanger 
[3] => Norway 
) 

訪問http://php.net/manual/en/function.fgetcsv.php以上の参照用。この例に

1

http://php.net/manual/en/function.fgetcsv.php#example-2613

if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $filteredData = array_filter($data, function($item) { 
      return '' !=== $item; 
     }); 
     echo implode(', ', $filteredData), PHP_EOL; 
    } 
    fclose($handle); 
} 

しかし、その代わりimplode(', ', $filteredData)を印刷するには、次のCSSでarray_filter()と印刷implode('</span><span class="comma">', $data)を削除する必要があります。

.comma { 
    background-color: red; 
    padding: 2px 5px; 
} 
.comma:empty { 
    display: none; 
} 
.comma + .comma { 
    margin-left: 20px; 
} 

新しいPHPコード:

if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    echo '<div class="csv">'; 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     echo '<div><span class="comma">'; 
     echo implode('</span>, <span class="comma">', $data), PHP_EOL; 
     echo '</span></div>'; 
    } 
    fclose($handle); 
    echo '</div>'; 
} 
関連する問題