我有四个php变量,如:$abc, $bcd, $dsf, $gkg
。现在我想用逗号分隔它们来连接它们。
输出:
abc,bcd,dsf,gkg
现在,如果任何变量没有返回任何值..则输出如下:
abc,,dsf,gkg
那么如果任何变量的值为null,该如何避免这种情况?
$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..
答案 0 :(得分:18)
此解决方案应该适合您:
只需将所有变量放入数组并使用array_filter()
过滤掉所有空值,然后用逗号({3}}将它们过滤掉,例如
$fulladdress = implode(",", array_filter([$street, $city, $state, $country, $zipcode])) ;
答案 1 :(得分:1)
此代码未经过优化,但可以正常运行:
<?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));
答案 2 :(得分:1)
array_filter可用于从提供的数组中过滤掉FALSE,空或Null字符串。
点击此处: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
)
现在内爆得到的数组'','所以你得到一个字符串将所有非空元素分开,
以下是我在代码中使用的内容:
$Matter_Client_Address_City_ST_Zip =
implode(",",array_filter([$Matter_Client_City,
$Matter_Client_State,$Matter_Client_Zip]));
上面的代码只会输出非空字段,所以如果city为空,则会输出CA,92620
答案 3 :(得分:0)
可以帮助您
:function concat_ws(){
$ar=func_get_args();
return implode(array_shift($ar), array_filter($ar)) ;
}
echo concat_ws(" - ", "hello", "", null, "world");
返回:你好-世界