Php 基于非数组值从多维数组中删除数组

Php 基于非数组值从多维数组中删除数组,php,arrays,session,multidimensional-array,session-variables,Php,Arrays,Session,Multidimensional Array,Session Variables,我目前正在尝试为我的网站创建“添加到购物车”和“从购物车中删除”功能。目前,我将用户信息存储在会话变量名购物车中。将会话变量打印为以下格式返回给我: Array ( [0] => Array ( [productID] => 3 [productTitle] => Life Without Limits [productAuthor] => Nick Vujicic

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

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
        )
)
我能够让add-to-cart功能正常工作,但我目前还停留在remove-from-cart功能上。当用户单击remove按钮时,特定的productID将通过ajax发送到我的php文件中,我希望从购物车数组中删除product数组。例如,如果我要删除productID=3的产品,则购物车数组应仅返回:

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);
它没有经过测试

foreach ($arr as $k => $item) {
    if ($item['productID'] == $productID) {
          unset($arr[$k]);
          break;
    }
} 
如果要在删除项后恢复索引

$arr = array_values($arr);
如果您正在使用(PHP5>=5.5.0),您可以使用下面的简单方法从购物车数组中获取密钥并取消设置项目

$key = array_search(4, array_column($arr, 'productID'));
if(!empty($key)){
    unset($arr[$key]);
}
如果您正在使用(PHP5>=5.5.0),您可以使用下面的简单方法从购物车数组中获取密钥并取消设置项目

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