我目前正在尝试读取一个如下所示的输入文件:
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;
}
有人看到我在这里做错了什么吗?非常感谢。
您的代码看起来不错。在分配splode之前,我确实添加了一个if语句,以确保splode为5。这是为了防止文件末尾可能出现空行。
我在这里的一个测试文件上用几行代码运行了它,它处理正确,并按预期输出。
根据您创建此文件的方式,是否可以在每行的末尾都有一个"''r"或"''r''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;
}