我只是想在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”]吗?
非常感谢
答案 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()`。