根据数组值从多维数组中删除数组

Removing array from multidimensional array based off array values

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

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 的产品,购物车数组应该只 return:

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

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

未测试

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

如果要在删除项目后恢复索引

$arr = array_values($arr);

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

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