在PHP中警告foreach()但仍然循环

时间:2015-02-10 04:29:31

标签: php html

我在浏览器调试器中收到警告,但PHP仍然有效。为什么我会收到警告?提前谢谢。

Warning: Invalid argument supplied for foreach().

HTML:

<form action="" method="post" name="savefile">
    <input id="uniqueID" value="ZF4446A3GZ" name="filename" type="text">
    <input name="textdata[]" type="text">
    <input name="textdata[]" type="text">
    <input name="textdata[]" type="text">
    <input value="Done!" name="submitsave" type="submit">
</form>

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

1 个答案:

答案 0 :(得分:1)

发生此错误是因为您尝试迭代不可迭代的变量。

$_POST["textdata"]未设置或不是数组($ _POST通常只包含标量和数组)

要防止出现此错误,您应该检查$_POST["textdata"]是否已设置并且是否为数组。

if ( isset($_POST["textdata"]) && is_array($_POST["textdata"]) ) {
  //DO stuff
}