Gadman Tang
Gadman Tang

Reputation: 91

Removing array from multidimensional array based off array values

I am currently attempting to create a add to cart and remove from cart function for my website. Currently, I am storing the user's information in a session variable name shopping cart. print_r that session variable as the following format was returned to me:

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
        )
)

I was able to get the add to cart function working, but I'm currently stuck at the remove from cart function. When a user clicks on the remove button, that particular productID will be sent via ajax to my php file, and from there I would like to remove the product array from the shopping cart array. For example, if I want to remove a product with productID = 3, the shopping cart array should only return:

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

How do I go about achieving this? Thank you for your help in advance!

Upvotes: 0

Views: 4372

Answers (2)

If you are using (PHP 5 >= 5.5.0) you can use the below simple method to get the key and unset the item from the shopping cart array.

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

Upvotes: 2

splash58
splash58

Reputation: 26153

It's not tested

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

If you want to restore indexes after removing item

$arr = array_values($arr);

Upvotes: 3

Related Questions