У меня есть четыре переменные PHP, как: $abc, $bcd, $dsf, $gkg
, Теперь я хочу объединить их с запятой, разделяющей каждый.
выход:
abc,bcd,dsf,gkg
Теперь, если какая-либо переменная не возвращает никакого значения .., то результат будет выглядеть так:
abc,,dsf,gkg
Так что же делать, чтобы избежать этого, если значение любой переменной равно нулю ??
$street = tribe_get_address( $event->ID );
$city = tribe_get_city( $event->ID );
$state = tribe_get_stateprovince($event->ID);
$country = tribe_get_country( $event->ID );
$zipcode = tribe_get_zip( $event->ID );
$fulladdress= concatenation of these variables..
Это решение должно работать для вас:
Просто поместите все переменные в массив и отфильтруйте все пустые значения с помощью array_filter()
, тогда просто implode()
их через запятую, например
$fulladdress = implode(",", array_filter([$street, $city, $state, $country, $zipcode])) ;
Этот код не оптимизирован, но он работает:
<?php
$abc = "abc";
$bcd = null;
$cde = "cde";
/**
* concatenate some values
* @param $values an array witch contains all values to concatenate
*/
function concat( $values = array() )
{
//Look over all values
for ($i = 0; $i < count($values); $i++) {
//If current value is not null or empty, display it
if ( !empty($values[$i]) )
echo $values[$i];
//If current value is not null AND if it is not the last value
if ( !empty($values[$i]) && $i < count($values) -1 )
echo ', ';
}
}
concat(array($abc, $bcd, $cde));
array_filter может быть использован для фильтрации FALSE, пустой или пустой строки из предоставленного массива.
Проверьте здесь: http://php.net/manual/en/function.array-filter.php
<?php
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
?>
Код выше выведет:
Array
(
[0] => foo
[2] => -1
)
Теперь взорвите получившийся массив wit ‘,’, чтобы вы получили строку, в которой все непустые элементы разделены,
Вот что я использовал в своем коде:
$Matter_Client_Address_City_ST_Zip =
implode(",",array_filter([$Matter_Client_City,
$Matter_Client_State,$Matter_Client_Zip]));
Приведенный выше код будет выводить только непустые поля, разделенные, поэтому, если город не указан, он выдаст CA, 92620