如何为会话中存储的关联数组添加值?

时间:2017-10-02 09:21:28

标签: php arrays session session-variables

$productname = $_GET['productname'];
$productcode = $_GET['productcode'];
$lastsession = $_SESSION["wishlist"];

// CHECK IF SESSION IS EMPTY OR NOT
if(empty($lastsession)) {
    $wishlist = array("$productname" => $productcode);
} else {
    /*
        How Can I Update array ???      
    */
}

此代码设置为名为" wishlist"。会话的数组 问题是会话正在被替换。我想添加到数组中,如果它已经存在。

那么如何用新数据更新我的数组呢? 我尝试了以下内容。

[mobile] => iphone_2

数组输出是这样的。它不是数字索引关联的。 我想要单个数组的结果。不是数组中的数组。

{{1}}

谢谢。

3 个答案:

答案 0 :(得分:3)

简而言之,你可以这样做(如果我理解正确的话):

$productname = $_GET['productname'];
$productcode = $_GET['productcode'];
$lastsession = $_SESSION["wishlist"];

// CHECK IF SESSION IS EMPTY OR NOT
if(empty($lastsession)) {
    $wishlist = array("$productname" => $productcode);
} else {
    array_push($wishlist, array("$productname" => $productcode));
}

array_push是一个将信息添加到数组末尾的函数。在这个例子中,我们使用它将产品数组添加到当前的愿望清单。

另一种简单的解决方案是:

// create a blank array if the session variable is not created
// array_push requires an array to be passed as the first parameter
$wishlist = isset($_SESSION["wishlist"]) ? $_SESSION["wishlist"] : array();
//$wishlist = $_SESSION["wishlist"] ?? array(); // this is for PHP 7+
array_push($wishlist, array("$productname" => $productcode));

// you can then access each product as:
$wishlist["mobile"];

或者使用以下内容替换上面代码段中的第5行:

$wishlist[$productname] = $productcode;

这样可以避免像第3行那样创建一个空数组 array_push的优势在于您可以一次添加多个产品,例如:

$products = [$productname1 => $productcode1, $productname2 => $productcode2];
array_push($wishlist, $products);

我注意到的一件事是您将会话设置为$lastsession以及使用$wishlist。尝试并将重复变量保留为不存在。

答案 1 :(得分:0)

将心愿单数据从会话设置为变量,然后将新产品添加到此变量中。之后更新会话中的心愿单数据。

{{1}}

答案 2 :(得分:0)

$_SESSION["wishlist"] = array( 'product1' => 'product1 Name' );
// Initial products in session

$temp_session = $_SESSION["wishlist"];
//store products in wishlist in temp variable

$temp_session['mobile'] = 'iphone_2';
// Add new product to temp variable

$_SESSION["wishlist"] = $temp_session;
//Update session

print_r( $_SESSION["wishlist"] );