函数在PHP中进行串联时跳过空变量


Function to skip empty variable during concatenation in PHP

新手问题,但有人能帮我做一个简单的函数吗?在PHP中连接时跳过空变量并添加逗号。

示例;

$addressline1 = "Street";
$addressline2 = "";
$addressline3 = "London";

我想得到;

$concataddress = "Street, London";

而不是;

$concataddress = "Street, , London";

我从mysql数据库获取地址我显然可以使用if...else语句和检查if(empty($addressline1))等,但要寻找高效简单的语句。

谢谢!

您可以将它们放在一个数组中,并使用带有内爆的数组过滤器

$address = implode(", ", array_filter(array($addressline1, $addressline2, $addressline3));

array_filter如果没有回调,将删除所有求值为false的元素。

$concatAddress = implode(', ', array_filter(array(
    $addressline1,
    $addressline2,
    $addressline3,
    ...
)));

试试Vatev的建议:

$array = array(
    'Street',
    '',
    'London',
);
$concatAddress = implode(', ', array_filter($array));
echo $concatAddress;

使用variablename不会有更高的效率。

如果你把它存储在一个数组中,你可能会更有效率,因为你的代码看起来很好,而不是速度。

例如:

function getAdres($ARR_adresParts){
  $adres = array();
  foreach($ARR_adresParts as $onePart){
    if ($onePart !== ""){
      $adres[] = $onePart;
    }
  }
  return implode(", ",$adres);
}

然后称之为:

$adr = getAdres(array($addressline1,$addressline2,$addressline3));

不太好,但考虑到目前的情况,我怀疑它会变得更漂亮