Как объединить различные строки в PHP с нулевым эффектом

У меня есть четыре переменные 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..

2

Решение

Это решение должно работать для вас:

Просто поместите все переменные в массив и отфильтруйте все пустые значения с помощью array_filter(), тогда просто implode() их через запятую, например

$fulladdress = implode(",", array_filter([$street, $city, $state, $country, $zipcode])) ;
16

Другие решения

Этот код не оптимизирован, но он работает:

<?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));
1

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

1
По вопросам рекламы [email protected]