无法理解PHP代码示例

时间:2012-03-31 06:28:11

标签: php

我一直在四处寻找是否有其他人已经解剖过此代码,但事实证明这是徒劳的。我在理解来自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方法,但如果有人能够向我提供细分,我们将非常感激。

2 个答案:

答案 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";
    }

这是为文件的每一行

完成的