Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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
PHP会话购物车:如果它是';他已经识别了会话_Php_Session Variables_Shopping Cart - Fatal编程技术网

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]
是否存在(有数组键存在),然后继续:)

哦,老兄,真是太感谢你了。虽然我没有