Heim > Backend-Entwicklung > PHP-Tutorial > PHP打开文件有类似Python中“for line in open('file')”的写法吗?

PHP打开文件有类似Python中“for line in open('file')”的写法吗?

WBOY
Freigeben: 2016-06-06 20:45:55
Original
1446 Leute haben es durchsucht

Python中读取文件有非常方便的方式:

<code class="lang-python">for line in open('file'):
    print line
</code>
Nach dem Login kopieren
Nach dem Login kopieren

PHP中类似的写法吗?就像Python这样两行搞定的?

回复内容:

Python中读取文件有非常方便的方式:

<code class="lang-python">for line in open('file'):
    print line
</code>
Nach dem Login kopieren
Nach dem Login kopieren

PHP中类似的写法吗?就像Python这样两行搞定的?

当然也可以啦,请参考file()的示例:

<code>foreach(file('file') as $line)
    echo $line;
</code>
Nach dem Login kopieren

@公子的答案算是标准答案吧
不过假设文件很大,那么其实这种做法存在性能问题,会使PHP更大的内存,文件足够大的时候,导致严重错误

令人欣慰的是,在php 5.5.0版本开始,新的特性 Generator 生成器,绝对是更好的解决方案

<code class="lang-php">function getLines($file) {
    $f = fopen($file, 'r');
    try {
        while ($line = fgets($f)) {
            yield $line;
        }
    } finally {
        fclose($f);
    }
}

foreach (getLines("file.txt") as $n => $line) {
    if ($n > 5) break;
    echo $line;
}
</code>
Nach dem Login kopieren

生成器的介绍在这里 Generator

善用generator,节省内存,绝对正途

两行搞不定,最少得四行。

<code class="lang-php">//读文件
$fh = fopen('file', 'r');
//如果指针没在文件末尾继续
while (!feof($fh)) {
    //输出当前行并将指针移动到下一行
    echo fgets($fh) . "\r\n";
}
fclose($fh);
</code>
Nach dem Login kopieren

这四行中,如果文件读取失败,我们可以进行处理,而你的两行想要判断这一点,也需要改回四行。
你懂我的意思、

其实python可以一行就对文件进行 行处理,比如:
array = [int(line.strip()) for line in open('file')]
python3 加入了 with open('file') f.close 可以不用写了。

比行数没意义。这个在PHP里太简单了。

<code>$fp = fopen('file', 'r');
while($line = fgets($fp)) {
    echo $line;
}
</code>
Nach dem Login kopieren
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage