PHP会话购物车:如果它是';他已经识别了会话
我一直在努力通过PHP会话购物车:如果它是';他已经识别了会话,php,session-variables,shopping-cart,Php,Session Variables,Shopping Cart,我一直在努力通过$\u SESSION找到一个简单购物车的解决方案。 我保持它非常简单,这是我现在的代码 if ( Input::isPost('add') ) { $id = Input::get('id'); $qta = Input::post('qta'); $size = Input::post('size'); if ( !isset($_SESSION['cart']) ) { $_SESSION['cart'] = array(
$\u SESSION
找到一个简单购物车的解决方案。
我保持它非常简单,这是我现在的代码
if ( Input::isPost('add') ) {
$id = Input::get('id');
$qta = Input::post('qta');
$size = Input::post('size');
if ( !isset($_SESSION['cart']) ) {
$_SESSION['cart'] = array();
}
if ( array_key_exists($id, $_SESSION['cart']) ) {
if ( $_SESSION['cart'][$id][0] == $size ) {
$_SESSION['cart'][$id][1]+=$qta;
} else {
$_SESSION['cart'][$id] = array( $size, $qta );
}
} else {
$_SESSION['cart'][$id] = array( $size, $qta );
}
}
那么,这段代码的作用是什么
1) 如果$\u会话['cart']
不存在,请创建它,否则添加新项目。2) 添加到购物车项目时,必须为该项目选择大小和数量。3) 如果购物车数组中已经存在该项目,请检查大小是否相同,如果相同,请更新数量。问题是,如果项目已经存在(检查$\u会话['cart'][$id]
),但大小不同,请不要更新当前项目,而是创建一个新项目。问题是,当前的一个正在被替换,而不是添加一个,因此,我没有使用两个具有相同id
但不同大小的产品,而是使用最新的一个
如果你能帮我解决这个问题,我将非常感激
先谢谢你 更好的方法是创建另一个名为size
的数组,并将大小存储在那里。所以你的代码看起来像
if (in_array($size, $_SESSION['cart'][$id]['sizes'])) {
//The size has been added to the cart
} else {
//The size isn't in the cart so add it
$_SESSION['cart'][$id]['sizes'][] = $size;
}
也不要像这样储存数量
$_SESSION['cart'][$id][1]+=$qta;
为什么不增加一些有意义的键,以便更好地理解数组的内容。比如说
$_SESSION['cart'][$id]['qty']+=$qta;
更好的方法是创建另一个名为size
的数组,并将大小存储在那里。所以你的代码看起来像
if (in_array($size, $_SESSION['cart'][$id]['sizes'])) {
//The size has been added to the cart
} else {
//The size isn't in the cart so add it
$_SESSION['cart'][$id]['sizes'][] = $size;
}
也不要像这样储存数量
$_SESSION['cart'][$id][1]+=$qta;
为什么不增加一些有意义的键,以便更好地理解数组的内容。比如说
$_SESSION['cart'][$id]['qty']+=$qta;
更好的方法是创建另一个名为size
的数组,并将大小存储在那里。所以你的代码看起来像
if (in_array($size, $_SESSION['cart'][$id]['sizes'])) {
//The size has been added to the cart
} else {
//The size isn't in the cart so add it
$_SESSION['cart'][$id]['sizes'][] = $size;
}
也不要像这样储存数量
$_SESSION['cart'][$id][1]+=$qta;
为什么不增加一些有意义的键,以便更好地理解数组的内容。比如说
$_SESSION['cart'][$id]['qty']+=$qta;
更好的方法是创建另一个名为size
的数组,并将大小存储在那里。所以你的代码看起来像
if (in_array($size, $_SESSION['cart'][$id]['sizes'])) {
//The size has been added to the cart
} else {
//The size isn't in the cart so add it
$_SESSION['cart'][$id]['sizes'][] = $size;
}
也不要像这样储存数量
$_SESSION['cart'][$id][1]+=$qta;
为什么不增加一些有意义的键,以便更好地理解数组的内容。比如说
$_SESSION['cart'][$id]['qty']+=$qta;
尝试将大小用作多维数组中额外维度的键。您当前的代码只允许您为每件物品设置一个尺码
你会得到这样的结果:
if ( Input::isPost('add') ) {
$id = Input::get('id');
$qta = Input::post('qta');
$size = Input::post('size');
if ( !isset($_SESSION['cart']) ) {
$_SESSION['cart'] = array();
}
if ( array_key_exists($_SESSION['cart'][$id][$size]) ) {
$_SESSION['cart'][$id][$size] += $qta;
} else {
$_SESSION['cart'][$id][$size] = $qta;
}
}
尝试将大小用作多维数组中额外维度的键。您当前的代码只允许您为每件物品设置一个尺码
你会得到这样的结果:
if ( Input::isPost('add') ) {
$id = Input::get('id');
$qta = Input::post('qta');
$size = Input::post('size');
if ( !isset($_SESSION['cart']) ) {
$_SESSION['cart'] = array();
}
if ( array_key_exists($_SESSION['cart'][$id][$size]) ) {
$_SESSION['cart'][$id][$size] += $qta;
} else {
$_SESSION['cart'][$id][$size] = $qta;
}
}
尝试将大小用作多维数组中额外维度的键。您当前的代码只允许您为每件物品设置一个尺码
你会得到这样的结果:
if ( Input::isPost('add') ) {
$id = Input::get('id');
$qta = Input::post('qta');
$size = Input::post('size');
if ( !isset($_SESSION['cart']) ) {
$_SESSION['cart'] = array();
}
if ( array_key_exists($_SESSION['cart'][$id][$size]) ) {
$_SESSION['cart'][$id][$size] += $qta;
} else {
$_SESSION['cart'][$id][$size] = $qta;
}
}
尝试将大小用作多维数组中额外维度的键。您当前的代码只允许您为每件物品设置一个尺码
你会得到这样的结果:
if ( Input::isPost('add') ) {
$id = Input::get('id');
$qta = Input::post('qta');
$size = Input::post('size');
if ( !isset($_SESSION['cart']) ) {
$_SESSION['cart'] = array();
}
if ( array_key_exists($_SESSION['cart'][$id][$size]) ) {
$_SESSION['cart'][$id][$size] += $qta;
} else {
$_SESSION['cart'][$id][$size] = $qta;
}
}
问题在于:
if ( $_SESSION['cart'][$id][0] == $size ) {
$_SESSION['cart'][$id][1]+=$qta;
} else {
$_SESSION['cart'][$id] = array( $size, $qta );
}
如果大小不同,则将其替换为一个新数组(bloc的else
)。
这就是您的阵列:
Array(
'cart'=>array(
'id'=>array('size', 'qta')
)
)
使用该结构,对于ID只有一个大小,因此,如果您想添加另一个,而不是替换旧的,则应该考虑使用:
Array(
'cart'=>array(
'id'=>array(0=>array('size1'=>'qta1'), 1=>array('size2'=>'qta2'))
)
)
当然,这意味着您需要在阵列上循环以找到正确的大小,然后更新qta。不好玩
使用此结构可能更有趣:
Array(
'cart'=>array(
'id'=>array('size1'=>'qta1', 'size2'=>'qta2')
)
)
因此,您不必检查$\u会话['cart'][$id][0]=$size
,只需检查$\u会话['cart'][$id][$size]
是否存在(存在数组密钥),然后继续:)问题在于:
if ( $_SESSION['cart'][$id][0] == $size ) {
$_SESSION['cart'][$id][1]+=$qta;
} else {
$_SESSION['cart'][$id] = array( $size, $qta );
}
如果大小不同,则将其替换为一个新数组(bloc的else
)。
这就是您的阵列:
Array(
'cart'=>array(
'id'=>array('size', 'qta')
)
)
使用该结构,对于ID只有一个大小,因此,如果您想添加另一个,而不是替换旧的,则应该考虑使用:
Array(
'cart'=>array(
'id'=>array(0=>array('size1'=>'qta1'), 1=>array('size2'=>'qta2'))
)
)
当然,这意味着您需要在阵列上循环以找到正确的大小,然后更新qta。不好玩
使用此结构可能更有趣:
Array(
'cart'=>array(
'id'=>array('size1'=>'qta1', 'size2'=>'qta2')
)
)
因此,您不必检查$\u会话['cart'][$id][0]=$size
,只需检查$\u会话['cart'][$id][$size]
是否存在(存在数组密钥),然后继续:)问题在于:
if ( $_SESSION['cart'][$id][0] == $size ) {
$_SESSION['cart'][$id][1]+=$qta;
} else {
$_SESSION['cart'][$id] = array( $size, $qta );
}
如果大小不同,则将其替换为一个新数组(bloc的else
)。
这就是您的阵列:
Array(
'cart'=>array(
'id'=>array('size', 'qta')
)
)
使用该结构,对于ID只有一个大小,因此,如果您想添加另一个,而不是替换旧的,则应该考虑使用:
Array(
'cart'=>array(
'id'=>array(0=>array('size1'=>'qta1'), 1=>array('size2'=>'qta2'))
)
)
当然,这意味着您需要在阵列上循环以找到正确的大小,然后更新qta。不好玩
使用此结构可能更有趣:
Array(
'cart'=>array(
'id'=>array('size1'=>'qta1', 'size2'=>'qta2')
)
)
因此,您不必检查$\u会话['cart'][$id][0]=$size
,只需检查$\u会话['cart'][$id][$size]
是否存在(存在数组密钥),然后继续:)问题在于:
if ( $_SESSION['cart'][$id][0] == $size ) {
$_SESSION['cart'][$id][1]+=$qta;
} else {
$_SESSION['cart'][$id] = array( $size, $qta );
}
如果大小不同,则将其替换为一个新数组(bloc的else
)。
这就是您的阵列:
Array(
'cart'=>array(
'id'=>array('size', 'qta')
)
)
使用该结构,对于ID只有一个大小,因此,如果您想添加另一个,而不是替换旧的,则应该考虑使用:
Array(
'cart'=>array(
'id'=>array(0=>array('size1'=>'qta1'), 1=>array('size2'=>'qta2'))
)
)
当然,这意味着您需要在阵列上循环以找到正确的大小,然后更新qta。不好玩
使用此结构可能更有趣:
Array(
'cart'=>array(
'id'=>array('size1'=>'qta1', 'size2'=>'qta2')
)
)
所以,你不需要检查$\u会话['cart'][$id][0]=$size
,你只需要检查$\u会话['cart'][$id][$size]
是否存在(有数组键存在),然后继续:)哦,老兄,真是太感谢你了。虽然我没有