我是PHP的新手,正在尝试制作与.csv文件进行通信的待办事项列表。到目前为止,我已经设法编写了一个将用户输入内容输入到csv文件中的函数,但是我一直坚持写一个可以解析(我什至不确定这是否正确)术语的函数。 .csv文件转换为多维数组,因此我可以方便地在PHTML文件中显示列表的每一行。
这是我到目前为止所拥有的:
`<?php
//
// ─── DATA ────────────────────────────────────────────────────────────────────
//
$user_entry = array(
'title' => '',
'description' => '',
'date' => '',
'priority' => ''
);
// puts the data the users entered into an array
$user_entry['title'] = $_POST['title'];
$user_entry['description'] = $_POST['description'];
$user_entry['date'] = $_POST['date'];
$user_entry['priority'] = $_POST['priority'];
//
// ─── FUNCTIONS ──────────────────────────────────────────────────────────────────
//
function writeInList() {
//parses the $user_entry array into the .csv file
global $user_entry;
$file = fopen("todo.csv","a");
fputcsv($file, $user_entry, ",");
fclose($file);
}
function displayList() {
//That's where I'm stuck.
$file = fopen("todo.csv","r");
$fileCountable = file("todo.csv");
for ($i = 0; $i < count($fileCountable); $i++) {
$csvContent = fgetcsv($file, 1000, ",");
foreach ($csvContent as $value){
$var[$i] = $value;
}
echo '<br>';
}
fclose($file);
}
//
// ─── MAIN CODE ─────────────────────────────────────────────────────────────
//
writeInList();
include 'todolist.phtml';`
对不起,如果之前已经讨论过。我进行了很多搜索,发现了类似的问题,但无法使其在我自己的代码中起作用。如果有人花时间查看我的代码,请多谢!
这也是我第一次在这里发帖,所以我希望我做得对。
答案 0 :(得分:1)
你做得很好。您可以查看fgetcsv文档以了解更多信息。我将更改您的函数,以便它将参数作为输入(请尝试避免使用global
)
// insert data
function writeInList($user_entry, $path ) {
$file = fopen($path ,"a");
fputcsv($file, $user_entry, ",");
fclose($file);
}
//extract data
function getList($path, $limit = 100000) {
$file = fopen($path, "r");
if (!$file) return null; // or throw error or print to log
$allRows = []; //
while (($data = fgetcsv($file, $limit, ",")) !== FALSE) {
$allRows[] = $data; // as fgetcsv return array already exlode by ","
}
fclose($file);
return $allRows;
}
现在,您从getList
返回了2维数组。使用状态为getList("todo.csv")
,并根据需要显示。
希望有帮助!