PHP $ _SESSION数组问题

时间:2011-04-06 16:29:19

标签: php arrays session

我只是想在php中编写一个添加到折扣数组的函数,但它似乎根本不起作用。

    function addToDiscountArray($item){
        // if we already have the discount array set up
        if(isset($_SESSION["discountCalculator"])){

            // check that this item is not already in the array
            if(!(in_array($item,$_SESSION["discountCalculator"]))){
                // add it to the array if it isn't already present
                array_push($_SESSION["discountCalculator"], $item);
            }
        }
        else{

            $array = array($item);
            // if the array hasn't been set up, initialise it and add $item
            $_SESSION["discountCalculator"] = $array;
        }
}

每次刷新页面时,它的行为都像$ _SESSION [“discountCalculator”]尚未设置但我无法理解为什么。虽然写作可以在正常的方式中在foreach php循环中使用$ _SESSION [“discountCalculator”]吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

每次$_SESSION['discountCalculator']似乎都没有设置的事实可能是因为$_SESSION未设置(NULL)。这种情况主要发生在您未在页面开头执行session_start()的情况下。 尝试在函数开头添加session_start()

function addToDiscountArray($item) {
    if (!$_SESSION) { // $_SESSION is NULL if session is not started
        session_start(); // we need to start the session to populate it
    }
    // if we already have the discount array set up
    if(isset($_SESSION["discountCalculator"])){

        // check that this item is not already in the array
        if(!(in_array($item,$_SESSION["discountCalculator"]))){
            // add it to the array if it isn't already present
            array_push($_SESSION["discountCalculator"], $item);
        }
    }
    else{

        $array = array($item);
        // if the array hasn't been set up, initialise it and add $item
        $_SESSION["discountCalculator"] = $array;
    }
}

请注意,如果会话已经启动,这不会影响该功能。如果会话未启动,它将只运行'session_start()`。