这是令人沮丧的,我从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";
}
?>
期待您的反馈
答案 0 :(得分:2)
这是文本字段的正确行为。它们始终存在于POST请求中,即使是空值(与复选框相反)。 您可以像这样过滤掉它们:
$checkBox = implode(', ', array_filter($_POST['Days']));
答案 1 :(得分:0)
尝试
$checkBoxArray = $_POST['Days'];
foreach ($checkBoxArray as $value)
{
echo "Inserting >>> ".$value. "<br />";
}
因为它已经是一个数组。为此你甚至不需要爆炸并破坏它。直接使用那个数组Days