从基于数组值的多维数组中删除数组

时间:2017-11-15 09:51:11

标签: php arrays session multidimensional-array session-variables

我目前正在尝试为我的网站创建一个添加到购物车并从购物车功能中删除。目前,我将用户的信息存储在会话变量名称购物车中。 print_r将以下格式的会话变量返回给我:

Array
(
    [0] => Array
        (
            [productID] => 3
            [productTitle] => Life Without Limits
            [productAuthor] => Nick Vujicic
            [productImg] => nickvujicic/lifewithoutlimits
            [productPrice] => 38.00
        )

    [1] => Array
        (
            [productID] => 4
            [productTitle] => Stand Strong
            [productAuthor] => Nick Vujicic
            [productImg] => nickvujicic/standstrong
            [productPrice] => 25.00
        )
)

我能够让添加到购物车功能正常工作,但我目前仍然停留在购物车功能中。当用户点击删除按钮时,该特定产品ID将通过ajax发送到我的php文件,并从那里我想从购物车阵列中删除产品阵列。例如,如果我要删除productID = 3的产品,则购物车阵列应仅返回:

Array
(
    [0] => Array
        (
            [productID] => 4
            [productTitle] => Stand Strong
            [productAuthor] => Nick Vujicic
            [productImg] => nickvujicic/standstrong
            [productPrice] => 25.00
        )
)

我如何实现这一目标?感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

没有经过测试

foreach ($arr as $k => $item) {
    if ($item['productID'] == $productID) {
          unset($arr[$k]);
          break;
    }
} 

如果要在删除项目

后恢复索引
$arr = array_values($arr);

答案 1 :(得分:2)

如果您使用(PHP 5> = 5.5.0),您可以使用以下简单方法获取密钥并从购物车阵列中取消设置项目。

$key = array_search(4, array_column($arr, 'productID'));
if(!empty($key)){
    unset($arr[$key]);
}