Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I remove a single array member using array_splice in php?

I think I may not understand correctly how array_splice is supposed to work. My understanding is that the first param is your initial array, the second param is the element to start at, and the third param is the length, or number of elements to remove/replace.

So, I have this array (print_r output):

Array ( 
[0] => Array ( [TypeFlag] => S [qty] => 1 [denom] => 25 [certMessage] => [totalPrice] => 25 ) 
[1] => Array ( [TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50 ) 
[2] => Array ( [TypeFlag] => V [qty] => 2 [denom] => 25 [certMessage] => test [totalPrice] => 50 ) )

I want to completely remove the second element (the array with index of 1; TypeFlag = C, etc.) I do not want to replace it with anything; just to return the array with the remaining two elements. I've tried this (where cart is the array name):

$cart = array_splice($cart, 1,1);

But what I end up with is this when doing a print_r:

Array ( [0] => Array ( [TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50 ) ) 

So it appears to be removing 0 and 2, and leaving 1 as the remainder. What am I doing wrong?

like image 523
EmmyS Avatar asked Sep 27 '10 15:09

EmmyS


People also ask

How can I remove a specific item from an array PHP?

In order to remove an element from an array, we can use unset() function which removes the element from an array and then use array_values() function which indexes the array numerically automatically.

How do I remove one element from an array?

pop() function: This method is use to remove elements from the end of an array. shift() function: This method is use to remove elements from the start of an array. splice() function: This method is use to remove elements from the specific index of an array.

How do you remove an element from an array using splice?

Find the index of the array element you want to remove using indexOf , and then remove that index with splice . The splice() method changes the contents of an array by removing existing elements and/or adding new elements. The second parameter of splice is the number of elements to remove.

How add and remove value from array in PHP?

You can do that using the array_push function with some code similar to: $arr = array('test1','test2'); array_push($arr,'test3','liftoff'); Using the code above, we created a new array called “$arr” and added two elements to it. We then used the array_push function to add two more new elements to the array.


1 Answers

array_splice returns an array consisting of the extracted elements.

You are doing:

$cart = array_splice($cart, 1,1);

So you are extracting 2nd element (index 1) and are assigning the result back to $cart, overwriting your original array.

To completely remove the 2nd element do not assign the return value of array_splice back to $cart. So just do:

array_splice($cart, 1,1);

This works because the array is passed by reference to the function.

Also if you want to remove a single element from the array its more efficient and cleaner to use unset as:

unset($cart[1]);
like image 90
codaddict Avatar answered Oct 03 '22 14:10

codaddict