从csv文件读取时获取空值

时间:2011-02-10 20:41:30

标签: php regex

我有一个csv文件,每行都有一个单词

word1
word2
word3

并使用以下代码来读取数据:

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

问题是我为$ rows [0]获取空字符串/ null并且我非常确定数据是否存在。

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

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

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您是否正在尝试将这些单词读入数组?用以下内容替换所有内容:

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

答案 1 :(得分:1)

无法重现。我假设你的文件格式有问题。很可能顶部有一个空行(我不太确定,但可能无法通过!== false测试。)

更好的尝试:

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

如果您需要重新添加引号,请执行单独的循环。

答案 2 :(得分:1)

文件阅读部分已经得到解答,但关于添加引号的循环,您可以使用array_walk()

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

array_walk($arr, "add_quotes");