PHP:向Session数组添加选项

时间:2014-07-09 16:14:17

标签: php arrays multidimensional-array session-variables add

在订购程序中,我有一个步骤,可以选择多个选项来添加订单。我将其存储在会话中,以便它显示在我的购物车和订单摘要中。

我现在的问题是,我的代码只能添加一个选项。但是,需要添加多个选项。

目前的情况是,订购流程中的每一步都有一个view.html.php和一个default.php(控制器和视图)。

对于流程中的这个特定步骤(添加选项),我最终得到了以下代码:

在view.html.php中:

if(JRequest::getVar('reset')) {
                unset ($_SESSION['selectedoptions'][$plan->id]);    
                $mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
            }
            elseif(JRequest::getVar('add')){
                $_SESSION['selectedoptions'][] = $plan->id;
                $mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
            }

在default.php中:

<?php if(isset($_SESSION['selectedoptions'][$plan->id])): ?>
            <input class="btn-address btn-address-text" type="submit" name="reset" value="Verwijderen" />
        <?php else: ?>
            <input class="btn-address btn-address-text" type="submit" name="add" value="Toevoegen" />
        <?php endif; ?>

我希望功能为数组添加一个选项,以便稍后我可以读取数组值来显示所选的项目。我做错了什么?

希望有人能帮助我,提前谢谢!

1 个答案:

答案 0 :(得分:0)

您检查值是否存在错误的方式。

你这样做:

<?php if(isset($_SESSION['selectedoptions'][$plan->id])): ?>

你应该做

<?php if(in_array($plan->id, $_SESSION['selectedoptions'])): ?>

修改

但是也可能同样寻找unset,你设置这个值是错误的。

而不是:

$_SESSION['selectedoptions'][] = $plan->id;

你应该这样做:

$_SESSION['selectedoptions'][$plan->id] = 1;

然后default.php中的代码应该正常工作

<强> EDIT2

在default.php文件中添加:

<input type="hidden" name="plan_id" value="<?php echo $plan->id; ?>" />

在您展示的代码的开头。

在viev.html.php中,您应该将代码更改为:

if(JRequest::getVar('reset')) {
                unset ($_SESSION['selectedoptions'][JRequest::getVar('plan_id')]);    
                $mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
            }
            elseif(JRequest::getVar('add')){
                $_SESSION['selectedoptions'][JRequest::getVar('plan_id')] =  1;
                $mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
            }