我有一个.csv文件。某些字段为空,某些字段为逗号或点。
现在我怎么能在数组中这样显示它?
Array (
[0] => Name1,name1@yahoo.com,13,56475,,190000,,,remit,5-Mar-15,26250
[1] => Name2,name2@yahoo.com,11,11250,,22500,,,the bank,30-Apr-15,6250
[2] => Name3,name3@yahoo.com,15,,,1500,receipt,,the market,7-Mar-15,1750
[3] =>Name4,name4@yahoo.com,21,25500,,46750,receipt,,bank ,7-Mar-15,21350 ..... )
截至目前,我只能这样显示:
Array (
[0] => Name1
[1] => name1@yahoo.com
[2] => 13
[3] => 56475
[4] =>
[5] => 19000
[6] =>
[7] =>
[8] => remit
[9] => 5-Mar-15
[10] => 26250 )
Array (
[0] => Name2
[1] => name2@yahoo.com
[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 :(得分:2)
如果您的预期输出位于顶部,则可以使用file()
方法将文件解析为数组。
$lines = file('file.csv');
foreach ($lines as $line_num => $line) {
echo $line . '<br />';
}
答案 1 :(得分:1)
fgetcsv()可以解决您的问题..
fgetcsv()函数从打开的文件中解析一行,检查CSV字段。
fgetcsv()函数停止在新行上返回 指定的长度,或在EOF,以先到者为准。
此函数在成功时返回数组中的CSV字段,或者为FALSE 失败和EOF。
<强>语法强>
fgetcsv(文件,长度,分离器,附文)
示例:
<?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以获取更多参考资料。
答案 2 :(得分: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)
,而应删除array_filter()
并使用以下CSS打印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>';
}
答案 3 :(得分:0)
通过用逗号分隔每个值来读取csv文件。如果您的值包含昏迷本身,那么它将被视为多个值 例 如果你有一个值B,C和一个值A. 如果你把css写为B,C,A,那么它将自己视为B C和A. 避免这样的问题。使用诸如引号或双引号等封闭空间 “B,C”, “A”