Php 为脚本的foreach()+逻辑提供的参数无效

Php 为脚本的foreach()+逻辑提供的参数无效,php,Php,今天早些时候我发布了一个类似的问题,但是我最近下载了xampp,现在可能会出现语法错误。我对这一切都很陌生 请参阅此示例以查看my.php文件的当前状态: 我可以让.txt文件提取并显示.txt文件中的内容,但任何修改.txt文件的尝试都不会发生 当我在xampp上运行此命令时,出现了以下错误:第30行的file2.php中为foreach提供的参数无效。这里有一个快速提示:跟踪迭代器。令人困惑将每个行号视为文件中唯一的偏移量。您需要迭代foreach并每次将其递增+1。稍后编辑行时,只需提交偏

今天早些时候我发布了一个类似的问题,但是我最近下载了xampp,现在可能会出现语法错误。我对这一切都很陌生

请参阅此示例以查看my.php文件的当前状态:

我可以让.txt文件提取并显示.txt文件中的内容,但任何修改.txt文件的尝试都不会发生


当我在xampp上运行此命令时,出现了以下错误:第30行的file2.php中为foreach提供的参数无效。这里有一个快速提示:跟踪迭代器。令人困惑将每个行号视为文件中唯一的偏移量。您需要迭代foreach并每次将其递增+1。稍后编辑行时,只需提交偏移量编号,再次迭代并检查$i=$\u POST['iterator']


编辑为最后一个函数不起作用

function editTxt(){
  $find_name = $_POST['name'];
  $find_time = $_POST['time'];
  $filename = getcwd() . "/test.txt";
  $lines = file( $filename , FILE_IGNORE_NEW_LINES );
  foreach($lines as $key => $line)
  {
      list($time, $name) = explode('|', $line);
      if($time == $find_time && $name == "Available")
      {
          $lines[$key] = $time."|".$find_name;
          file_put_contents( $filename , $lines );
          break;
      }
  }
}
如果您计划将其用于除练习之外的其他用途,我建议使用数据库

试试看:

$users = file($filename);

我怀疑$users===false,因为您没有使用相同的计算文件名。

在您最近更新代码后:问题标题中错误消息的答案是:


代码缺少行$users=filetest.txt

嗯……可注入性漏洞。我真的不知道该怎么称呼它,因为你使用的是一个纯文本文件,不好,但你需要清理你的输入。还有,你的函数现在到底出了什么问题?我们不是读心术的人,你们需要告诉我们到底出了什么问题。使用数据库。不加锁定的并发文件修改可能会对你造成伤害。你真的想用数据库来实现这一点——它会让你的生活变得更轻松。看看名为SQLite的东西,它是一个平面文件数据库。学习SQL等可能会有点开销,但值得学习。伙计们,这里的问题不是他为什么选择使用基于明文的解决方案而不是db存储。这是一个练习。我输入了你的代码,但现在无法加载页面。我明白你的逻辑,但我想我在什么地方出错了。有什么想法吗?我只是得到一张空白页。我包括ini_设置“显示错误”、“打开”;错误报告全部严格;在我的脚本中,但我没有得到任何语法错误。很抱歉,我不能给出更好的答案。对所有这些都很陌生。您应该在创建表之前调用编辑文本,而不要在编辑文本的末尾调用创建表。这将导致您写出两个表格!完成。不过我还是得到了一张空白页。我用最新的代码更新了我的问题。非常感谢您的帮助。我已经更改了为更好的内容提供的函数,但现在又出现了一个错误:第21行的/Applications/XAMPP/xamppfiles/htdocs/file2.php中的文件名不能为空。那么,提交后的代码似乎没有执行。您也可以尝试$users=filegetcwd/test.txt';这就是诀窍。正如您指出的,现在的问题是提交代码没有执行。你知道为什么吗?很可能你没有发布一个名为submit的字段。这样就消除了这个错误。我现在有其他错误,所以我要重新发布。谢谢你的帮助。
$users = file($filename);