我有一堆字段,我希望检索每个字段的内容并将其发布到文本文件中,但每个字段的数据都存储在新行中。所以我调整了我发现的一个片段,它非常有效,做了我想要的。我检查了控制台,它出现了一个错误。我真的是PHP的新手,我希望有人能帮我。
错误:
Warning: Invalid argument supplied for foreach().
Warning: fclose() expects parameter 1 to be resource, null given.
PHP:
<?php
if (isset($_POST)){
foreach($_POST["textdata"] as $text){
if(!file_exists($_POST['filename'] . ".txt")){
$file = tmpfile();
}
$file = fopen($_POST['filename'] . ".txt","a+");
while(!feof($file)){
$old = $old . fgets($file);
}
file_put_contents($_POST['filename'] . ".txt", trim($text).PHP_EOL, FILE_APPEND);
}
fclose($file);
}
?>
提前感谢!
您的$_POST['textdata']
不是数组,因此foreach循环永远不会执行。它直接跳转到fclose()
调用。由于您从未执行过循环,因此从未定义过$file
,因此您正在关闭一个空文件句柄。
如果您希望textdata
是一个数组,那么它必须在html:的字段名称中使用[]
来定义
<input type="text" name="textdata[]" />
^^---necessary.
在更大的方案中,你应该把fclose放在循环中:
foreach(...) {
$file = tmpfile();
blah blah blah
fclose($file);
}
这样,只有当$file在一开始就被打开时,才能关闭它。