I am trying to get the following output:
string1, string2, string3
Those values comes from $var1
, $var2
and $var3
but they can be NULL
at some point and here is where my problem is.
So far this is what I have:
$arr = array(
$var1 !== null ? $var1 : '',
$var2 !== null ? $var2 : '',
$var3 !== null ? $var3 : '',
);
echo $arr !== '' ? implode(', ', $arr) : '-';
This are the test I've run:
input: array('string1', 'string2', 'string3')
output: string1, string2, string3
input: array('string1', 'string2')
output: string1, string2
input: array('', '', '')
output: , ,
input: array(null, null, null)
output: , ,
As you may notice if values are coming everything work as I want, if values are coming NULL
then I am getting , ,
when I what I want is just a -
.
I have tried to find whether the array contains empty values or not using this code:
$cnt = count($arr) !== count(array_filter($arr, "strlen"));
echo $cnt;
Then I've run the following test:
input: array('string1', 'string2', 'string3')
output: 3
input: array('string1', 'string2')
output: 2
input: array('', '', '')
output: 1
input: array(null, null, null)
output: 1
What I am missing or doing wrong here? How I can achieve this?
Filter the array before implode and if the imploded array is an empty string assign -
, otherwise assign the imploded array:
$result = implode(', ', array_filter($arr)) ?: '-';
For PHP < 5.3.0 not supporting ?:
then:
$result = ($s = implode(', ', array_filter($arr))) ? $s : '-';
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