在PHP中连接期间跳过空变量的函数

时间:2015-11-11 09:31:22

标签: php mysql

新手问题但有人可以帮助一个简单的函数在PHP连接期间跳过空变量并添加一个逗号。

实施例

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

我想得到;

$concataddress = "Street, London";

而不是;

$concataddress = "Street, , London";

我从mysql DB获取地址 我显然可以使用if...else语句并检查if(empty($addressline1))等,但要寻找有效且简单的方法。

谢谢!

4 个答案:

答案 0 :(得分:2)

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

echo'<input type="checkbox" name="checkbox"/>';
echo'<textarea name="explain" id="explain"
cols="" rows="" style="width:300 ;height:300"></textarea>

if(isset($_POST['checkbox']))
{
  ??? 
}

答案 1 :(得分:1)

没有回调的

array_filter会删除评估为false的所有元素。

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

答案 2 :(得分:0)

尝试Vatev的建议:

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

答案 3 :(得分:-1)

使用变量名,你不会获得更高的效率。

如果将它存储在数组中,您可能会以代码看起来很好的方式提高效率,而不是速度。

例如:

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

然后称之为:

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

不好,但考虑到这种情况,我怀疑它会变得更加美丽,然后就是这样。 : - )