首页 > 解决方案 > 这段代码有什么问题,我使用的是 PHP 8

问题描述

循环永远不会停止,它也总是打印,不仅当 $i 等于 8

$file  = file_get_contents ($fileUrl);
$i = 0;
        
while ($line = explode ("\r\n", $file)) {
            
    if ($i == 8) {
        print_r ($line);
        exit ();
    }
            
    $i++;
}

顺便说一句,我需要使用 file_get_contents 因为我使用的是 DOM,但我使用该代码是因为我需要第 8 行中的数据,有没有更好的方法来获取特定行

标签: phpdom

解决方案


你没有循环通过这些线路。您正在设置$line为所有行的数组,而不是特定行。而且您每次通过循环都将其设置为相同的东西,因此while条件永远不会改变。

$i == 8但是,由于exit()调用,循环应该停止。然后它将打印所有带有print_r().

如果你想要 line 8,只需索引数组。

$lines = explode("\r\n", $file);
if (count($lines) >= 9) {
    print_r($lines[8]);
}

仅供参考,您还可以使用file()读取文件并将其拆分为行:

$lines = file($fileUrl, FILE_IGNORE_NEW_LINES);

推荐阅读