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);
加载中,请稍侯......
精彩评论