我有一個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