使用会话在foreach循环中取消设置数组值?

时间:2015-01-09 14:13:02

标签: php session foreach unset

任何人都可以解释为什么unset函数在以下代码中不起作用?

正如我所料,$_SESSION['card_nr'] = $card_nr;存储了最后一个循环$card_nr,但我希望它存储用户点击的card_nr,这就是我需要取消设置的原因(ps。我不想使用GET) 。

我已根据网络搜索测试了不同的解决方案。 stack overflow answers,但无法完成以下工作。

    $task_array = array_combine($task_id_unique, $task_status);
        foreach ($task_array as $card_nr => $card_status) { 
        $_SESSION['card_nr'] = $card_nr;
        ?>  
        <table>
          <tr>
            <th>Card nr.</th>       
            <th>Status</th>       
            </tr>
            <td><?php 
                            echo $card_nr;?></td>
            <td><?php 
                            if ($card_status == true) {
                            unset($task_array[$card_nr]);
                            echo "<a href=workcard.php>Open</a>";
                }
            else echo "Done ". $card_nr;?></td>
        </table>
<?php       }

1 个答案:

答案 0 :(得分:0)

我通过以下方式解决了我的问题:

elseif (mysql_num_rows($results)>= 1) {
        echo "Customer: ". $customer. "<br>Active workcard:<br>";
        $task_array = array_combine($task_id_unique, $task_status);
            foreach ($task_array as $card_nr => $card_status) { 
            ?>  
                <?php 
                if ($card_status == true) { 
                    echo "<table><tr>";
                    echo "<th>Workcard nr.</th>";
                    echo "<th>Status</th></tr>";
                    echo "<td>".$card_nr."</td>";
                        echo "<td>";
                        echo "<form action='workcard_open.php' method='POST' >";
                        echo "<input type='hidden' name='card_nr' value='".$card_nr."' />";
                        echo "<input type='submit' value='Open' />";
                        echo "</td></form></table>";
                }
                ?>