簡體   English   中英

PHP - while 循環 (!feof()) 沒有輸出/顯示所有內容

[英]PHP - while loop (!feof()) isn't outputting/showing everything

我想閱讀(回聲)一個.txt,文件的一切

這是我的代碼:

$handle = @fopen("item_sets.txt", "r");

while (!feof($handle))
{
    $buffer = fgets($handle, 4096);
    $trimmed = trim($buffer);
    echo $trimmed;
}

這是我的“item_sets.txt”: http ://pastebin.com/sxapZGuW

但它不會回顯所有內容(並根據我是否回顯以及我在其后回顯多少個字符來更改顯示的數量)。 var_dump()告訴我最后一個字符串從未完成打印。 看起來像這樣:

" string(45) ""[cu_well_tra 。但如果我把

echo "whateverthisisjustarandomstringwithseveralcharacters"; ,

我最后的輸出行如下所示:

" string(45) ""[cu_well_traveled_ak47]weapon_ak47" "1" " string(5) "} "

基本上我的代碼沒有打印/回顯它應該或至少沒有顯示它的所有內容。

提前致謝 :)

那是因為您對 EOF 的測試是在您輸出上次讀取之前

作為閱讀過程的一部分,嘗試使用 EOF 測試

<?php
$line_count = 0;

$handle = fopen("item_sets.txt", "r");

if ($handle) {

    while (($buffer = fgets($handle, 4096)) !== false) {
        $trimmed = trim($buffer);
        echo $trimmed;
        $line_count++;
    }
} else {
    echo 'Unexpected error opening file';
}
fclose($handle);

echo PHP_EOL.PHP_EOL.PHP_EOL.'Lines read from file = ' . $line_count;
?>

此外,我刪除了fopen前面的@以忽略錯誤的不良做法,以及更好的做法來查找和處理它們。

我將你的數據復制到一個名為 tst.txt 的文件中並運行了這個確切的代碼

<?php
$handle = fopen('tst.txt', 'r');

if ($handle) {

    while (($buffer = fgets($handle, 4096)) !== false) {
        $trimmed = trim($buffer);
        echo $trimmed;
    }
} else {
    echo 'Unexpected error opening file';
}
fclose($handle);

它生成了這個輸出(這里只顯示了一小部分)

"item_sets"{"set_community_3"{"name"            "#CSGO_set_community_3""set_description"                "#CSGO_set_community_3_desc""is_collection"

最后的輸出是

[aa_fade_revolver]weapon_revolver"          "1"

哪個是數據文件中的最后一個條目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM