【问题标题】:incrementing counter in multiple text file在多个文本文件中递增计数器
【发布时间】:2017-04-06 13:22:35
【问题描述】:

当用户访问我的页面时,我试图在多个文本文件中增加一个计数器,但我正在使用的代码在下面不起作用是代码

$files = glob("counters/visit/*.txt");


foreach($files as $file) {
    $content = file_get_contents($file);


    if(!isset($_SESSION['hasVisited'])){
      $_SESSION['hasVisited']="yes";
      $content++;
      $f = fopen($files, "w");
      fwrite($f, $content);
      fclose($f);
    }
}

【问题讨论】:

  • mode "w" 用于写入,但每次都会覆盖,所以您应该使用 "a" 进行追加
  • 给你一些错误?
  • 没有错误但它没有增加@valbrux
  • 我改变了“w”,但它仍然没有增加@BunkerBoy

标签: php counter increment


【解决方案1】:

首先通过执行以下操作确保$content是一个整数:

$content = intval(file_get_contents($file));

那么你正在使用:

$f = fopen($files, "w");

而不是:

$f = fopen($file, "w");

fopen 不能接受数组作为参数

正如@alanlittle 所提到的,如果您希望所有文件都递增,您应该考虑设置$_SESSION['hasVisited']="yes"; 并将其放在循环末尾的那一刻。

【讨论】:

  • 另外,只有第一个文件会被更新,因为你设置了$_SESSION['hasVisited']
  • 已将 $files 更改为 $file 但它仍然没有增加 @Nirnae
  • 还有什么是更新所有文件的最佳方式,因为$_SESSION['hasVisited']="yes"; 是检查标准
  • 更改了答案以确保您使用的是可以递增的整数
  • 正如我在回答中所说,您可以将 $_SESSION['hasVisited']="yes"; 放在您的 foreach() 之后,这样整个循环将被执行,或者如果您真的想将它放在您的 foreach() 中,那么您可以count($files) 并在最后一回合使用索引设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多