我正试图获得一个PHP函数来从文本文件中读取信息,并将其作为数组返回。我的函数在文件开头似乎运行良好,但在文件末尾或此文件为空时卡住了。
下面是我的功能和文本文件:
function readBook($file) {
$book = [];
$line = trim(fgets($file));
// Get rid of white lines at start of file
while ($line !== false && strlen($line) === 0) {
$line = trim(fgets($file));
}
if ($line === false) {
return false;
}
// Prepare and return the array
while ($line !== false && strlen($line) > 0) {
$pos = strpos($line, ":");
if ($pos != false) {
$key = trim(substr($line, 0, $pos));
$value = trim(substr($line, $pos + 1));
$book[$key] = $value;
//echo $line . "\n";
$line = trim(fgets($file));
} else {
throw new \Exception("Erreur - Fichier mal écrit", 125);
}
}
return $book;
}
该文本文件为:
couverture : scorpion.jpg
titre : La marque du diable
serie : Le Scorpion
auteurs : Marini - Desberg
année : 2000
catégorie : bandes-dessinées
couverture : BOB.jpg
titre : La marque du BOB
serie : Le BOB
auteurs : Marini - Desberg
année : 2000
catégorie : bandes-dessinées
在此示例中,当调用该函数3次时,它应仅返回两本书。什么它现在是返回的两本书和一个无限加载环路会被卡住。
难道你们帮我在这里?
最诚挚的问候
答案 0 :(得分:2)
在EOF上,trim(fgets($fileHandle))
返回""
而不是false
开始更改
$line = trim(fgets($file));
while ($line !== false && strlen($line) === 0) {
通过
$line = fgets($file);
while ($line !== false && strlen(trim($line)) === 0) {
$line = fgets($file);
}