1

这是我用来从公共谷歌文档电子表格(导​​出为 CSV)中提取数据的代码。

<?php
// link to Google Docs spreadsheet
$url='https://docs.google.com/spreadsheet/pub?key=xxxx&output=csv';

// open file for reading
if (($handle = fopen($url, "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
    {
        $totalrows = count($data);
        for ($row=0; $row<=$totalrows; $row++)
        {           
            if (strlen($data[$row])>0)
            {

                $firstname = $data[1];
                $surname = $data[1];

                echo $firstname;
                echo $surname;
            }
        }
        echo '<pre>';
        print_r($data);
        echo '</pre>';
    }
    fclose($handle);
}
exit;

?>

我得到的输出如下:

MartinMartin

Array
(
    [0] => Firstname
    [1] => Martin
)

CarlinCarlin

Array
(
    [0] => Surname
    [1] => Carlin
)

我只是对自己做错了什么感到困惑,我希望能够将数据设置为变量,以便稍后在脚本中回显它们。

IE

<?php echo $firstname; ?> 

应该呼应Martin,不是MartinMartin

这是数据在电子表格中的存储方式:

    A          B
1  Firstname Martin
2  Surname   Carlin

任何帮助表示赞赏!

更新

现在将结构更改如下(抱歉冗长和重复):

// open file for reading
if (($handle = fopen($url, "r")) !== FALSE)
{
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
    {
        for ($row = 0; $row < count($data); $row += 2)
        {
            $firstname = $data[$row][1];
            $surname = $data[$row + 1][1];
        }



    }
    fclose($handle);
}
echo 'Firstname: '.$firstname.'<br /><br />';
echo 'Surname: '.$surname;
exit;
4

2 回答 2

1

您得到 MartinMartin 是因为您将 firstname 和 surname 设置为相同的 data[1] 值,并在每行迭代中将两者一起回显。如果你注释掉 echo $surname,你会发现它只是输出 Martin。请记住,Martin 的姓 Carlin 也与他的名字位于不同的行,因此您不能只执行 $surname = $data[1] 来获取它。你需要向前看下一行才能得到他的姓氏。您可能希望以两步方式迭代 $row 数组,以便可以索引 $data[$i][1] 和 $data[$i + 1][1] 的名字和姓氏。

$rows = array();
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
    $rows[] = $data;
}

fclose($handle);

for ($i = 1; $i < count($rows); $i += 2) 
{
    $first = $rows[$i][1];
    $surname = $rows[$i + 1][1];
}
于 2012-05-16T19:27:29.277 回答
1

文档的布局方式,每次 while 语句循环时,您都会得到名字或姓氏。不是都在同一个循环中。您应该将电子表格重构为:

    A - Firstname      B - Surname
1   Martin             Carlin
2   Next               Name

或者您需要在交替循环旋转时添加名字和姓氏

于 2012-05-16T19:33:39.247 回答