Sammy
Sammy

Reputation: 79

How to delete values from an array in PHP?

I need to delete the first 29 values of an array. I searched and there doesn't seem to be any built in PHP function that allows for this. How can this be done then?

Upvotes: 1

Views: 755

Answers (2)

Gumbo
Gumbo

Reputation: 655765

You can use array_splice to remove values from an array:

array_splice($arr, 0, 29)

The array is passed as a reference as array_splice modifies the array itself. It returns an array of the values that have been removed.

Here’s an example for how it works:

$arr = range(1, 30);
$removed = array_splice($arr, 0, 29);
var_dump($arr);     // array(1) { [0]=> int(30) }
var_dump($removed); // array(29) { [0]=> int(1) … [28]=> int(29) }

In opposite to that, array_slice (without p) just copies a part of an array without modifying it:

$arr = range(1, 30);
$copied = array_slice($arr, 29);
var_dump($arr);    // array(30) { [0]=> int(1) … [29]=> int(30) }
var_dump($copied); // array(1) { [0]=> int(30) }

Here array_slice($arr, 29) copies everything from the offset 29 on up to the end while leaving the $arr as is.

But as you said you want to delete values, array_splice seems to be the better choice instead of copying a part and re-assigning the copied part back to the variable like this:

 $arr = array_slice($arr, 29);

Because although this has the same effect (first 29 values are no longer there), you do the copy operation twice: create a new array and copy everything except the first 29 values and then re-assign that value to $arr (requires copying the whole array again).

Upvotes: 2

NikiC
NikiC

Reputation: 101946

array_splice($array, 0, 29);

array_splice deletes the elements from the array and returns the deleted elements.

Alternatively, if you want to keep the original array, but want to create a new array with the first 29 elements removed, use array_slice:

$newArray = array_slice($array, 29);

Upvotes: 4

Related Questions