3

I'm currently trying to use array_diff to remove 1 value from an array.

The code looks like this right now:

$item_id = 501;
$array = array_diff($user_items, array($item_id));

user items array: 501,501,502,502

results correctly in array: 502,502

Is it possible to remove only 1x501 instead of 2x501 value? or said differently: limit the removal by 1 value

array is then: 501,502,502

Any advice is appreciated

2 Answers 2

5

You can use array_search to find and remove the first value:

$pos = array_search($item_id, $user_items);

if($pos !== false)
  unset($user_items[$pos]);
Sign up to request clarification or add additional context in comments.

3 Comments

The OP wanted to remove one value only. If he wants them all out, then array_diff would be a better choice
That is what my code does. Take another look or try running it and output the results.
Yes, I see now that you're iterating the needles. Still, only one replacement is needed in this case, so there's no point in using a loop
2

How about searching for the item, then removing it if it exists?

$key = array_search($item_id, $user_items)
if ($key !== FALSE) {
  unset($user_items[$key]);
}

Using unset isn't quite as straightforward as you'd think. See Stefan Gehrig's answer in this similar question for details.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.