【问题标题】:Difference between readline vs fread/fgets in phpphp中readline与fread/fgets之间的区别
【发布时间】:2018-06-02 08:09:55
【问题描述】:

我之前一直在控制台命令中使用readline,但是今天我遇到了freadfgets 函数,我的问题是:使用这两种方法有什么区别:

// first
$inputLine = readline();

// second
$inputLine = fgets(STDIN);

它们的作用几乎相同,不是吗?

【问题讨论】:

标签: php io readline fgets fread


【解决方案1】:

我能想到的唯一可能的区别是readline() 不带参数,默认情况下只能从STDIN 读取输入,而fgets() 可以从任何resource 读取。因此,换句话说,readline() 是带有第一个预定义参数的fgets 的同义词,例如fprintf()printf()

考虑以下几点:

fprintf(STDOUT, "hello!");
printf("hello!);

这在php标准库中很常见。

【讨论】:

    【解决方案2】:

    readline() 默认从 STDIN 读取输入,而 fgets() 从任何资源读取。另外,readline() 比 fgets() 需要更多的时间来执行

    【讨论】:

      【解决方案3】:

      fgets 比 readline 快得多。我不知道为什么,不过我可以给你一些基准测试。

      我经常在 codeforces.com 上参与解决问题。在一个问题上,我遇到了时间限制问题(使用 PHP 解决时),我使用的是 readline,解决时间超过 2 秒。将 readline-s 替换为 fgets 后,求解时间为 400 毫秒。

      所以 fgets 相当快。

      【讨论】:

        猜你喜欢
        • 2013-08-17
        • 2011-02-14
        • 1970-01-01
        • 2013-09-13
        • 2012-04-18
        • 2015-01-13
        • 2019-04-09
        • 2014-10-30
        • 2021-12-07
        相关资源
        最近更新 更多