Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为存储在会话中的关联数组添加值? include('session.php'); $productname=$\u获取['productname']; $productcode=$\u获取['productcode']; $wishlist=数组($productname=>$productcode); $\会话[“愿望列表”]=愿望列表; 打印($_会话[“愿望列表]);_Php_Arrays_Session_Session Variables - Fatal编程技术网

如何为存储在会话中的关联数组添加值? include('session.php'); $productname=$\u获取['productname']; $productcode=$\u获取['productcode']; $wishlist=数组($productname=>$productcode); $\会话[“愿望列表”]=愿望列表; 打印($_会话[“愿望列表]);

如何为存储在会话中的关联数组添加值? include('session.php'); $productname=$\u获取['productname']; $productcode=$\u获取['productcode']; $wishlist=数组($productname=>$productcode); $\会话[“愿望列表”]=愿望列表; 打印($_会话[“愿望列表]);,php,arrays,session,session-variables,Php,Arrays,Session,Session Variables,此代码设置为名为“wishlist”的会话的数组。 问题是会话正在被替换。如果数组已经存在,我想将其添加到数组中 因此,如何使用新数据更新阵列。 我试过以下方法 $productname = $_GET['productname']; $productcode = $_GET['productcode']; $lastsession = $_SESSION["wishlist"]; // CHECK IF SESSION IS EMPTY OR NOT if(empty($lastsessio

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

因此,如何使用新数据更新阵列。 我试过以下方法

$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 ???      
    */
}
数组输出是这样的。它是关联的,而不是数字索引的。 我想要一个数组的结果。不是数组中的数组

[mobile] => iphone_2
谢谢。

简而言之,您可以这样做(如果我正确理解问题):

$productname=$\u获取['productname'];
$productcode=$\u获取['productcode'];
$lastsession=$\会话[“愿望列表”];
//检查会话是否为空
if(空($lastsession)){
$wishlist=数组($productname=>$productcode);
}否则{
数组推送($wishlist,array($productname=>$productcode));
}
是一个将向数组末尾添加信息的函数。在本例中,我们使用它将产品阵列添加到当前的愿望列表中

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

// 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
。尝试将重复变量设置为不存在。

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

$productname = $_GET['productname'];
$productcode = $_GET['productcode'];

// do the same as: $wishlist = !empty($_SESSION["wishlist"]) ? $_SESSION["wishlist"] : [];
$wishlist = $_SESSION["wishlist"] ?? [];

$wishlist[$productname] = $productcode;
$_SESSION["wishlist"] = $wishlist;

print_r($_SESSION["wishlist"]);

$wishlist=$\会话[“wishlist”]??[]; 你能描述一下这一点吗?这是PHP7的一个新特性
Null合并操作符
(),当数据很大时,你不认为这是一个很长的过程?是的,显然没有优化,但只是想演示他如何更新会话阵列为什么不仅仅是
$\u session[“wishlist”][“mobile”]=“iphone\u 2”这就是您正在做的事情,但需要多个步骤。毕竟,$\u会话是一个多维数组。是否回答了您的问题?它声明会话的默认最大大小为128MBarray\u push($wishlist,array($productname=>$productcode));这将在数组中创建一个新数组。我只是想增加值而不是数组,那么我有什么解决方案?@JustCarty
array\u push
将生成多维数组(-;我真的不理解这个问题?您希望在$\u会话中使用多个数组,即$\u会话[“mobile”]?还是希望愿望列表成为一个会话,并在该会话中包含你的愿望列表项目?@TarangPanchal我的脚本做了你想做的事情,但方式更简单(-;
$_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"] );