2015-02-10 145 views
0

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

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

支票本,希望这将帮助ü... https://www.euperia.com/development/fix-php-warning-invalid-argument-supplied-foreach/1230和http://计算器.com/questions/19983912/warning-invalid-argument-supplied-for-foreach-in-php – Aru 2015-02-10 04:33:05

回答

1

这个错误是因为你想重复在非迭代变量。

要么$_POST["textdata"]未设置或者不是数组($ _ POST通常只能持有标量和数组)

要避免这个错误,如果$_POST["textdata"]设置,是一个数组,你应该检查。

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

解析错误:语法错误,意外的'[',期待')'。 – KaveElite 2015-02-10 04:46:01

+1

更精确'if(isset($ _ POST [“textdata”])&& is_array($ _ POST [“textdata”])){' – 2015-02-10 04:49:24

+0

修复它,不再警告,谢谢! – KaveElite 2015-02-10 04:52:32