答案 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.net上implode()
函数的别名