为foreach()+ Script的逻辑提供的参数无效

时间:2011-10-28 05:15:03

标签: php

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

请参阅此示例以查看我的.php文件的当前状态:http://rich2233.comoj.com/file2.php

我可以获取.txt文件来提取和显示.txt文件中的内容,但不会发生任何修改.txt文件的尝试。

当我在xampp上运行时,我收到此错误:在第30行的file2.php中为foreach()提供的参数无效

4 个答案:

答案 0 :(得分:2)

这是一个快速提示:跟踪你的迭代器。混乱?将每个行号视为文件中的唯一偏移量。您需要迭代(foreach)并每次递增+1。当您稍后编辑一行时,您只需要提交偏移编号,再次迭代并检查是否$i == $_POST['iterator']

// Iterator example
$users = file('text.txt');
$hours_taken = array();

foreach ($users as $user) {
  list($time, $name) = explode('|', $user);
  array_push($hours_taken, $time);
}
// Assuming same order of rows in users.txt
$hours = array('8:00 am', '9:00 am', '10:00 am'); // ...5:00 pm
$i = 1;
echo '<select name="time"><option selected>-- Select time --</option>';
foreach ($hours as $hour) {
  if (in_array($hour, $hours_taken)) {
    echo '<option disabled=disabled>'. $hour .'</option>';
  }
  else {
    echo '<option value='. $i .'>'. $hour .'</option>';
  }
  $i++;
}

答案 1 :(得分:2)

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

代码缺少第$users = file("test.txt");

答案 2 :(得分:1)

编辑为最后一个功能不起作用

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;
      }
  }
}

如果您计划将此用于除了锻炼之外的其他内容,我建议您使用数据库。

答案 3 :(得分:1)

尝试:

$users = file($filename);

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