在php中4096是什么意思?

时间:2015-10-27 03:22:24

标签: php fgets

我是php的新手 我无法理解一件简单的事情。

<?php 

    $users = fopen("users.txt", "r");

    while ($line = fgets($users, 4096)) {

        list($name, $occupation, $color) = explode("|", $line);

        printf("Name: %s<br/>", $name);
        printf("Occupation: %s<br/>", $occupation);
        printf("Favourite color: %s <br />", $color);
    }
    fclose($users);

 ?>

此处,while ($line = fgets($users, 4096))4096是什么意思?

1 个答案:

答案 0 :(得分:4)

这只是假设的最大长度。

根据fgets() ocumentation

  

读取 length - 1 字节,或换行符 EOF 时(以先到者为准)结束)。如果没有指定长度,它将继续从流中读取,直到它到达行尾。

如果你没有在4.3.0下为PHP指定length,它将使用length = 1024 如果您没有在较新版本中指定length,它将一直读到它到达行尾。

我可能会猜到指定length的几个原因:

  • 与旧版本的兼容性。较旧的版本将使用length = 1024。如果文件中的行较长,最好指定最大可能的长度;
  • 如果您想从一行读取不超过n个字符;
  • 也许,指定一个有限的length会对某个方面的表现产生积极的影响(如果我错了,请纠正我)。

因此,在新版本中,如果您想要读取整行 - 请勿使用length或将其设置为输入中行的最大可能长度。