【问题标题】:Send tab delimited txt values to PHP array将制表符分隔的 txt 值发送到 PHP 数组
【发布时间】:2015-04-15 21:42:57
【问题描述】:

我有一个制表符分隔的 txt 文件,我想在其中检索每一行的某些数据,并将该数据放入一个数组中。

这是我目前所拥有的:

$file_handle = fopen("/file.txt", "r");
$list = "";
while (!feof($file_handle) ) {
    $line_of_text = fgetcsv($file_handle, 0, "\t");
    $list .= $line_of_text[10] . " - " . $line_of_text[9] . ": " . $line_of_text[6];
}
fclose($file_handle);

然后我想将$list 放入像array($list) 这样的数组中。然后,该数组应在表单上的选择/下拉菜单中生成选项(将数组转换为选项的功能已经设置,只需获取正确的数组输出即可)。

问题是当我访问表单时,txt 文件中的所有行都在选择菜单中的一个<option> 中。因此,我得到的不是一个包含几十个选项的选择菜单,而是一个包含一个选项的选择菜单,其中包含来自 txt 文件的几十行数据。

【问题讨论】:

  • 也许:$list[] = ... 而不是:$list .= ... ?!
  • 你不是在构建一个数组。你正在构建一个长字符串。 .= 是字符串连接,而不是 array_push。你想要$list[] = ...

标签: php arrays


【解决方案1】:

通过$list = "" 并在您的while ($list .= ...) 中使用字符串追加,您正在创建一个大字符串。如果你想要一个数组,那就创建一个数组,然后append to the array

$file_handle = fopen("/file.txt", "r");
$list = array();
while (!feof($file_handle) ) {
    $line_of_text = fgetcsv($file_handle, 0, "\t");
    $list[] = $line_of_text[10] . " - " . $line_of_text[9] . ": " . $line_of_text[6];
}
fclose($file_handle);

【讨论】:

  • 谢谢,这行得通。不幸的是,我的 txt 文件非常大(超过 78,000 行,因此它现在超出了在菜单中加载数组的可用内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2020-06-19
相关资源
最近更新 更多