我有一个CSV文件,它在第一列中存储图像的ID以及所述图像及其标签文本的URL(电子表格被转换为图片库在其他地方)。有多个CSV名为1.csv,2.csv,3.csv等 - 为了循环的目的,我可以简单地抓住我的循环计数器连接到“.csv”来抓取文件 - 因为总会有一个设置的顺序的CSV,但并不总是一定数量。在PHP中对数组进行排序并将其推回到文件中
当用户使用我的控制面板编辑CSV时,它们可以更改图像的ID,当它们添加新图像时,它们也可以指定其ID。
这是的CSV
1,images/url/photograph.jpg,label text
2,images/url/image2.jpg,label text
4,images/url/apple.jpg,label text
3,images/url/foo.jpg,label text
5,images/url/5.jpg,label text
一个示例中的每个CSV被转换在下面的while循环,其本身存在一个循环,通过每个文件逐个
$htmlMenu .= "<tr> <th> Name/ID </th> <th> URL </th> <th> Text </th> </tr>";
$file_handle = fopen($fullCSVUrl, "r");
while (!feof($file_handle)) {
$line_of_text = fgetcsv($file_handle, 1024);
$htmlMenu .= "<tr> <td> $line_of_text[0] </td> <td> <a href=\"$line_of_text[1]\"> $line_of_text[1] </a> </td> <td> $line_of_text[2] </td>";
}
$htmlMenu .= "</table>";
最后进入内,$ htmlMenu会得到回应,它会将每个CSV作为单独的HTML表逐个生成一个页面。我相信这意味着$ line_of_text [0]是从文件中获取的ID。
如果可能,我希望在这个循环中按第一列对数据进行排序,然后将其发送回CSV,并在每次访问此页时按ID对文件进行有效排序。我不介意对CSV本身进行排序或对数组进行排序并将其推回到文件中,替换旧数据。
我希望我已经有效地解释过,我知道我想要做什么以及在哪里,我只是无法弄清楚。感谢您的帮助。 PS:据我所知,排序后的表格需要刷新才能显示,这是我个人使用的很好的方式。
感谢您的回复,此代码在一个循环内,因为有多个文件。你的代码确实对数据库进行了排序,但现在所有打印出的数据库都只是1.csv一遍又一遍地打印 - 虽然排序。如何修改以支持我的循环中的多个用途(包含我的所有代码) – Jordan
首先,您必须将所有文件放在数组中,然后您只需在它们之间进行迭代。你可以尝试这样的事情:http://stackoverflow.com/questions/29608709/reading-csv-files-from-directory-and-showing-the-content-of-each-file-fails 我将编辑答案为你的问题制定一个更好的方法... – megavexus