Perl's join() ignores (skips) empty array values; PHP's implode() does not appear to.
Suppose I have an array:
$array = array('one', '', '', 'four', '', 'six'); implode('-', $array);   yields:
one---four--six   instead of (IMHO the preferable):
one-four-six   Any other built-ins with the behaviour I'm looking for? Or is it going to be a custom jobbie?
PHP Implode Function The implode function in PHP is used to "join elements of an array with a string". The implode() function returns a string from elements of an array. It takes an array of strings and joins them together into one string using a delimiter (string to be used between the pieces) of your choice.
Answer: Use the PHP array_filter() function You can simply use the PHP array_filter() function to remove or filter empty values from an array. This function typically filters the values of an array using a callback function.
You can use array_filter():
If no callback is supplied, all entries of input equal to
FALSE(see converting to boolean) will be removed.
implode('-', array_filter($array));   Obviously this will not work if you have 0 (or any other value that evaluates to false) in your array and you want to keep it. But then you can provide your own callback function.
I suppose you can't consider it built in (because the function is running with a user defined function), but you could always use array_filter.
 Something like:
function rempty ($var) {     return !($var == "" || $var == null); } $string = implode('-',array_filter($array, 'rempty')); 
                        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