2011-02-10 14 views
1

を読みながら、null値を取得し、私はこのcsvファイルから

word1 
word2 
word3 

のように、各行のための単語を持っており、データを読み取るために、次のコードを持っているcsvファイルがあります。

$arr = array(); 
$fh = fopen('path/to/file', 'r'); 
while (($rows = fgetcsv($fh)) !== false) { 
print_r($rows); 
if (!in_array($rows[0], $arr)) 
    $arr[] = "'".trim($rows[0])."'"; 
} 
fclose($fh); 
print_r($arr); 

問題は空の文字列を取得することです/ $行[0]のためのnullと私はかなりデータがあることを確認します。

Array ([0] =>) 
Array ([0] =>) 
Array ([0] =>) 

Array ([0] => '' [1] => '' [2] => '' [3] => '') 

ご協力いただければ幸いです。

+0

PHPのバージョンは? <5ならば、行長paramはオプションではありません(?) – horatio

+0

PHP 5.3.1ので、オプションです;) – madkris24

答えて

1

あなたは単語を配列に読み込もうとしていますか?すべてをそれだけで置き換えます。

$arr = file('/path/to/file'); 
print_r($arr); 
+0

...重複を削除するには 'array_unique()'を使用してください。 – jeroen

+0

私はそれらを単一のqoutedにする必要があります。それのためのオプションを持っていないようです – madkris24

+0

テキストファイルに引用符を入れてください。 –

1

再生できません。私はあなたのファイル形式に何か問題があると仮定しています。ほとんどの場合、上に空の行がある可能性があります(これはわかりませんが、!== falseテストで失敗する可能性があります)。

良い試み:

$arr = array_map("str_getcsv", file("words.csv")); 
print_r($arr); 

そして、あなたが引用符を再度追加する必要がある場合は、別々のループを実行します。

+0

$ fh = fopen( 'path/to/file'、 'rb'); bオプションを追加するのを忘れましたが、あなたの提案を試してみましょう – madkris24

1

部分を読んでファイルが既に回答されていますが、あなたのループについての引用符を追加するには、array_walk()使用できます。

function add_quotes(&$item) 
{ 
    $item = "'" . $item . "'"; 
} 

array_walk($arr, "add_quotes"); 
+0

ループを実行するよりはるかに速いですか? – madkris24

+0

@madkrisそれはPHPにネイティブに焼いたものでなければなりません。あなたは正確な数字のためにテストする必要があります... – jeroen