为什么我的foreach循环不起作用?

时间:2013-11-26 07:27:52

标签: php html

这是令人沮丧的,我从HTML表单中的文本字段中提供值,如下所示。在下面的PHP文件中,我读入这些值,将它们转换为数组,然后尝试仅打印通过foreach循环填充的文本字段。由于一些奇怪的原因,foreach循环结束打印所有文本字段,无论它们是否被填充。为什么我无法仅打印填写的文本字段?我的代码在哪里出错:

在我的HTML文件下面找到:

<html>
<body>
<form method="post" action="chk123.php">
Flights on: <br/>

Sunday =    <input  type="datetime-local" name="Days[]" value="bdaytime"> <br>
Monday =      <input  type="datetime-local" name="Days[]" value="bdaytime"> <br>
Tuesday =   <input  type="datetime-local" name="Days[]" value="bdaytime"> <br>
Wednesday = <input  type="datetime-local" name="Days[]" value="bdaytime"> <br>
Thursday =  <input  type="datetime-local" name="Days[]" value="bdaytime"> <br>
Friday =      <input  type="datetime-local" name="Days[]" value="bdaytime"> <br>
Saturday =  <input  type="datetime-local" name="Days[]" value="bdaytime"> <br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

现在我的PHP文件:

<?php
if(isset($_POST['submit']))
{       
    $checkBox = implode(', ', $_POST['Days']);
    $checkBoxArray = explode(', ', $checkBox);

foreach ($checkBoxArray as $value)
   {
    echo "Inserting >>> ".$value. "<br />";
   }

    echo "<br />Complete";
}    
?>

期待您的反馈

2 个答案:

答案 0 :(得分:2)

这是文本字段的正确行为。它们始终存在于POST请求中,即使是空值(与复选框相反)。 您可以像这样过滤掉它们:

$checkBox = implode(', ', array_filter($_POST['Days']));

答案 1 :(得分:0)

尝试

$checkBoxArray = $_POST['Days'];

foreach ($checkBoxArray as $value)
{
     echo "Inserting >>> ".$value. "<br />";
}

因为它已经是一个数组。为此你甚至不需要爆炸并破坏它。直接使用那个数组Days