我使用它来存储我在会话中选择的表单,以便在用户返回到表单的另一页时可以调用它们。
问题我有总是必须有1个选择。如果我勾选Jam,然后取消Jam并勾选效果正常的黄油,但是如果我取消选中所有内容,那么它就不会清除阵列。
由于某种原因,它总是必须在数组中至少有一个条目?
foreach($_POST as $key => $value) {
$_SESSION[$key] = $value;
}
这是checkbox
代码:
<inputtype="checkbox name="<?php echo $course_menuname."extras[]"; ?>" <?php if(in_array("$extraitems", $_SESSION[$course_menuname.'extras'])) { echo "checked"; } ?> value="<?php echo $extraitems; ?>" id="checkbox">
变量如下:
$ extraitems包含“Toast Extras”字样,例如Jam,Butter和Flora $ course_menuname包含诸如“breakfast_cereal”,“breakfast_toast”之类的课程,如果它有“extra it does”这个词,则会在下面显示复选框。
这是表单:
答案 0 :(得分:0)
如果$ _POST为空,为什么不明确告诉PHP取消设置数组
<?php
if(empty($_POST))
unset($_SESSION);
?>
答案 1 :(得分:0)
通常,表单不会为未选中的复选框发送数据。要清除所有内容,您可以检查是否没有检查值,如果是这种情况,请清除会话值。您可以尝试将这些动态复选框存储在会话的子数组中,这样您就可以清除一个会话变量。例如:
foreach( $_POST as $key=>$val )
{
$_SESSION[$course_menuname.'extras'][$key] = $val;
}
您拥有表单名称的方式将有助于找到这些缺失的值。您可以检查数组元素是否设置为例如:
if( !isset( $_POST[$course_menuname.'extras' ) )
unset( $_SESSION[$course_menuname.'extras'] );