如何解析.csv文件到PHP中的多维数组?

问题描述 投票:2回答:1

我在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';`

我很抱歉,如果它已被讨论过。我已经搜查了很多,发现了类似的问题,但不能获得,使其在自己的代码工作。非常感谢提前如果有人花时间去看看我的代码!

这也是我第一次在这里发帖,所以我希望我做的是正确的。

php arrays csv multidimensional-array
1个回答
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")而显示为你高兴。

希望帮助!

© www.soinside.com 2019 - 2024. All rights reserved.