I have an array (sizeofarray = 5)
$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[2] = 'Paris'
$city[3] = 'Newyork'
$city[4] = 'Amsterdam'
(sizeofarray = 5)
I used array_unique() to remove dupes and got this:
$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[4] = 'Amsterdam'
(sizeofarray = 3)
But now I want this:
$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[2] = 'Amsterdam'
(sizeofarray = 3)
Is there some function to achieve this?
Use array_filter
after you run the array through array_unique
:
$city = array_filter($city);
From the documentation:
If no callback is supplied, all entries of input equal to
FALSE
(see converting to boolean) will be removed.
You may run into an error, however, if one of your array elements is equal to "0"
, as when converted to boolean, its value is false
. In that case, you'll have to use a custom callback function.
In your question, it appears that only the array indexing is out of order, and there are not actual empty string elements in your array. Try running the array though array_values
after array_unique
to reset the indexing:
$city = array_unique($city);
$city = array_values($city);
In addition to Tim Cooper's reply, use array_values()
to reindex the array:
$city = array_unique($city);
$city = array_filter($city);
$city = array_values($city);
And make sure same cities have same names, because 'New York' != 'Newyork'
. Otherwise you'll need additional filtering.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With