循环csv列值并将值连接到php中的新列

时间:2018-07-11 12:20:04

标签: php

我是PHP新手,试图循环和连接csv列值

我的输入是 enter image description here

,预期输出为 enter image description here

有人可以帮助我如何循环使用列值以获得预期的输出,并提前致谢。

1 个答案:

答案 0 :(得分:0)

基本上,您需要逐行读取CSV文件,将已解析的数据存储在数组中,然后执行一些嵌套循环。

此代码将完成您的示例工作(仅适用于3列):

<?php

$rows = [];

$file = fopen("your-file.csv", "r"); // open your file

while (!feof($file)) { // read file till the end
    $row = fgetcsv($file); // get current row as an array of elements
    if (!empty($row)) { // check that it's not the empty row
        array_push($rows, $row); // store row in array
    }
}

fclose($file);

for ($r1 = 0; $r1 < count($rows); $r1++) {
    for ($r2 = 0; $r2 < count($rows); $r2++) {
        for ($r3 = 0; $r3 < count($rows); $r3++) {
            echo $rows[$r1][0] . '_' . $rows[$r2][1] . '_' . $rows[$r3][2] . PHP_EOL;
        }
    }
}

这是一个非常肮脏的解决方案,我希望您可以使用递归使它更整洁,而不是嵌套循环,以防万一您需要解析未知的列数。

如果您还有固定的列数,只需添加更多的嵌套循环(用于$r4$r5等)。

有关如何在w3schools.com上的PHP中读取CSV文件的更多信息

关于join()函数的文档,它是php.netimplode()函数的别名