【问题标题】:Warning for foreach() in PHP but still does loopPHP中foreach()的警告,但仍然循环
【发布时间】:2015-02-10 04:29:30
【问题描述】:

我在浏览器调试器中收到警告,但 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);
    }
}
?>

【问题讨论】:

标签: php html


【解决方案1】:

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

$_POST["textdata"] 要么未设置要么不是数组($_POST 通常只保存标量和数组)

为了防止这个错误,你应该检查$_POST["textdata"]是否被设置并且是一个数组。

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

【讨论】:

  • 解析错误:语法错误,意外'[',期待')'。
  • 更精确if ( isset($_POST["textdata"]) &amp;&amp; is_array($_POST["textdata"]) ) {
猜你喜欢
  • 2019-03-01
  • 2015-06-13
  • 1970-01-01
  • 2016-09-26
  • 2012-07-19
  • 2022-01-22
  • 2021-01-02
  • 2019-01-08
  • 2017-10-28
相关资源
最近更新 更多