我一直在四处寻找是否有其他人已经解剖过此代码,但事实证明这是徒劳的。我在理解来自here的PHP代码示例中发生的事情时遇到了一些麻烦。
我目前仍然是编程和PHP的新手,所以我希望有人可以给我一个干净的解释(我已经阅读了文档,但我仍然无法完全理解代码)
我目前正在处理一个项目,将上传的CSV文件转换为数组,然后转换为数据库。示例代码如下:
示例#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);
}
?>
我想我的问题实际上是了解fgetcsv
方法,但如果有人能够向我提供细分,我们将非常感激。
答案 0 :(得分:3)
$row = 1;
设置处理的初始行数。
if (($handle = fopen("test.csv", "r")) !== FALSE) {
尝试打开文件(仅供阅读),仅在可以的情况下继续。
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
迭代CSV中的每一行(行的最大长度为1,000个字符,字段分隔符为逗号),仅在可行的情况下继续,将行拉出作为字段的索引数组。
$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 :(得分:1)
fgetcsv逐行读取你的csv。
它返回一个关联数组。例如,如果csv中有10列:
csv1,csv2,csv3,... csv10 $ data变量每个循环都是一个数组(csv1 =&gt;“value”1 ... csv10-&gt;“value10”)
因此,您的代码首先打印csv文件的列数
count($data)
然后迭代从csv获取的行并打印所有列值
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
这是为文件的每一行
完成的