PHP: Reorder arrays after unset()
There are 2 functions involved.
- Search array items for a given string
- unset() array item if string not found
$array = array("first", "second", "third", "fourth");
foreach($array as $i=> $string) {
if(stristr($string, "e")) {
unset($array[$i]);
}
}
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"
开发者_如何学Python$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);
精彩评论