将 txt 文件的每一行读取到新的数组元素

我试图将文本文件的每一行读入一个数组,并将每一行放入一个新元素中。
目前为止是我的代码。

<?php
$file = fopen("members.txt", "r");
while (!feof($file)) {


$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);


?>
300442 次浏览
<?php
$file = fopen("members.txt", "r");
$members = array();


while (!feof($file)) {
$members[] = fgets($file);
}


fclose($file);


var_dump($members);
?>
$lines = array();
while (($line = fgets($file)) !== false)
array_push($lines, $line);

显然,您需要首先创建一个文件句柄并将其存储在 $file中。

如果你不需要任何特殊的处理,这个应该做你想要的

$lines = file($filename, FILE_IGNORE_NEW_LINES);

你的方向是对的,但是你发布的代码有些问题。首先,while 循环没有结束括号。其次,$line _ of _ text 将被每次循环迭代所覆盖,通过将 = 更改为。= 在圈内。第三,您打开的是文字字符’n’,而不是实际的换行符; 在 PHP 中,单引号表示文字字符,但双引号实际上解释转义字符和变量。

    <?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {
$line_of_text .= fgets($file);
}
$members = explode("\n", $line_of_text);
fclose($file);
print_r($members);
?>

我找到的最快的方法是:

// Open the file
$fp = @fopen($filename, 'r');


// Add each line to an array
if ($fp) {
$array = explode("\n", fread($fp, filesize($filename)));
}

其中 $filename 将成为文件的路径和名称,例如. ./filename.txt。

根据您设置文本文件的方式,您可能需要处理 n 位。

用这个:

$array = explode("\n", file_get_contents('file.txt'));
$file = __DIR__."/file1.txt";
$f = fopen($file, "r");
$array1 = array();


while ( $line = fgets($f, 1000) )
{
$nl = mb_strtolower($line,'UTF-8');
$array1[] = $nl;
}


print_r($array);

就这么简单:

$lines = explode("\n", file_get_contents('foo.txt'));

file_get_contents()-以字符串形式获取整个文件。

explode("\n")-将分割字符串与分隔符 "\n"-什么是 ASCII-LF 转义换行符。

但请注意-检查文件有 UNIX行结束。

如果 "\n"将不能正常工作,你有另一个换行编码,你可以尝试 "\r\n""\r""\025"

    $file = file("links.txt");
print_r($file);

这将接受 txt 文件作为数组。所以写任何东西到 links.txt 文件(一行代表一个元素)之后,运行这个页面:)你的数组将是 $file

$yourArray = file("pathToFile.txt", FILE_IGNORE_NEW_LINES);

FILE_IGNORE_NEW_LINES避免在每个数组元素的末尾添加换行符
也可以使用 FILE_SKIP_EMPTY_LINES跳过空行

参考 给你

这里已经很好地讨论了这个问题,但是如果 真的需要比这里列出的任何内容更好的性能,那么可以使用这种使用 strtok的方法。

$Names_Keys = [];
$Name = strtok(file_get_contents($file), "\n");
while ($Name !== false) {
$Names_Keys[$Name] = 0;
$Name = strtok("\n");
}

注意,这里假设您的文件以新行字符 \n的形式保存(您可以根据需要进行更新) ,并且它还将单词/名称/行作为数组键而不是值存储,这样您就可以将其用作查找表,从而允许使用 isset(快得多得多)而不是 in_array