Home » Php » PHP: Reorder arrays after unset()

PHP: Reorder arrays after unset()

Posted by: admin November 29, 2017 Leave a comment


There are 2 functions involved.

  1. Search array items for a given string
  2. unset() array item if string not found

$array = array("first", "second", "third", "fourth");

foreach($array as $i=> $string) {  
 if(stristr($string, "e")) {  


“second” is the array item with the character ‘e’. If its unset, $array[1] would be left empty

$array[0] = "first"  
$array[1] = ""  
$array[2] = "third"  
$array[3] = "fourth"

I want $array[1] to be removed from the array (like in array_shift() ), so that “third” takes the place of “second” and “fourth” the place of “third”

$array[0] = "first"    
$array[1] = "third"  
$array[2] = "fourth"


$array = array_values($array);


I think the best solution I’ve found is :

Solution 1

if you just want to remove just one element :

  array_splice($array,1,1); // all keys will be reindexed from 0

where the second and third parameters are offset (key) and length (how many to remove)

Solution 2

The best to remove multiple keys : use array_filter() to remove all empty strings and falsey value from the array then array_splice() to reorder :

array_splice(array_filter($array), 0, 0);