我今天早些时候发布了一个类似的问题,但我最近下载了xampp,现在可能会出现语法错误。我对这一切都很陌生。
请参阅此示例以查看我的.php文件的当前状态:http://rich2233.comoj.com/file2.php
我可以获取.txt文件来提取和显示.txt文件中的内容,但不会发生任何修改.txt文件的尝试。
当我在xampp上运行时,我收到此错误:在第30行的file2.php中为foreach()提供的参数无效
答案 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,因为你没有使用相同的“计算”文件名。