将多选中的最后一个选项保存到会话变量后,为什么我不能取消选择它?

Why can't I unselect the last option in multiselect after I save it to a session variable?

我有一个 multi-select,它使用会话变量保存当前 selected 选项。但是,当我取消 select 所有选项时,最后一个 selected 选项保留。我该如何解决?这是我的代码:

<!DOCTYPE html>
<?php
    session_start();

    if(isset($_POST['occupation']))
        $_SESSION['occupation'] = $_POST['occupation'];
?>
<html>
<head>

</head>
<body>
    <form method="post" action="">
        <h2>Industy</h2>
        <select name="occupation[]" multiple >
            <?php 
                $occ = array("Accounting", "Education", "Healthcare", "Information Technology", "Retail", "Sales");

                $len = count($occ);

                for($i = 0; $i<$len; $i++ )
                {
                    if(in_array($occ[$i], $_SESSION['occupation']))
                        echo '<option value="' . $occ[$i] . '" selected>' . $occ[$i] .'</option>';
                    else
                        echo '<option value="' . $occ[$i] . '" >' . $occ[$i] .'</option>';
                } 

            ?>
        </select>
        <br/><br/>
        <button type="submit" value="Search" class="my-button" name="search_button" >Search</button>
    </form>
</body>
</html>

只需在您的代码中添加,如果您提交时没有任何值,只需将会话数组覆盖为空即可。

想法如下:

<?php
session_start();
$occ = array("Accounting", "Education", "Healthcare", "Information Technology", "Retail", "Sales");

if (empty($_SESSION['occupation'])) { // initialize
    $_SESSION['occupation'] = array();
}

if(isset($_POST['search_button'])) { // if submitted
    // set session occupation else just set empty
    $_SESSION['occupation'] = !empty($_POST['occupation']) ? $_POST['occupation'] : array();
}

?>
<!DOCTYPE html>
<html>
<head>

</head>
<body>
    <form method="post" action="">
        <h2>Industy</h2>
        <select name="occupation[]" multiple>
            <?php foreach ($occ as $o) { ?>
            <option value="<?php echo $o; ?>" <?php echo in_array($o, $_SESSION['occupation']) ? 'selected' : ''; ?>>
                <?php echo $o; ?>
            </option>
            <?php } ?>
        </select>
        <br/><br/>
        <button type="submit" value="Search" class="my-button" name="search_button" >Search</button>
    </form>
</body>
</html>