将制表符分隔的txt文件拆分为多维关联数组

时间:2014-10-08 03:24:24

标签: php arrays multidimensional-array

我目前正在尝试读取如下所示的输入文件:

annie   Tuesday October 7 at 08:32 pm   1   Cappuccino  2.5

它由制表符分隔。我试图从这个名为orders.txt的文件中读取,并将这是一个关联数组$ array。这是我到目前为止的代码。我尝试了几种不同的版本,但没有骰子。

function read_file() {
        $file = "orders.txt";
        $array = array();
        if(file_exists($file)) {
            $myfile = fopen($file, "r");
            $data = file_get_contents($file);
            $lines = explode("\n", $data);
            foreach($lines as $line) {
                $splode = explode("\t", $line);
                $array[] = array(
                    "Name" => $splode[0],
                    "Time" => $splode[1],
                    "Quant" => $splode[2],
                    "Type" => $splode[3],
                    "Price" => $splode[4],
                    );
            }
            fclose($myfile);
        }
        return $array;
    }

有谁能看到我在这里做错了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

您的代码看起来不错。我确实添加了一个if语句,以确保在分配之前splode长达5个。这可以防止文件末尾出现空白行。

我在测试文件上用几行代码运行它并正确处理并按预期输出。

根据你创建这个文件的方式 - 你可以在每一行的末尾加一个'\ r'或'\ r \ n'而不只是一个\ n ??这是你需要检查的东西 - 可能是一个十六进制编辑器,但我仍然认为你的代码应该运行正常(除非它只是一个\ r),只要有足够的标签来满足每一行的5(我调整为在我的建议中)。

function read_file()
{
    $file = "orders.txt";
    $array = array();

    if (file_exists($file)) {
        echo "Get";
        $myfile = fopen($file, "r");
        $data = file_get_contents($file);
        $lines = explode("\n", $data);
        var_dump($lines);
        foreach ($lines as $line) {
            $splode = explode("\t", $line);
            if (sizeof($splode) >= 5) $array[] = array(
                    "Name" => $splode[0],
                    "Time" => $splode[1],
                    "Quant" => $splode[2],
                    "Type" => $splode[3],
                    "Price" => $splode[4],
                    );
        }
        fclose($myfile);
    }
    return $array;
}