【问题标题】:Function to skip empty variable during concatenation in PHP在 PHP 中连接期间跳过空变量的函数
【发布时间】:2015-11-11 09:31:21
【问题描述】:

菜鸟问题,但有人可以提供一个简单的函数来帮助在 PHP 中连接期间跳过空变量并添加逗号。

示例;

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

我想得到;

$concataddress = "Street, London";

不是;

$concataddress = "Street, , London";

我正在从 mysql DB 获取地址 我显然可以使用if...else 语句并检查if(empty($addressline1)) 等,但要寻找一些高效且简单的东西。

谢谢!

【问题讨论】:

  • 你现在要连接的代码是什么?
  • $concataddress = str_replace(" ,", "", $contactaddress);
  • implode(', ',array_filter(array($addressline1,$addressline2...)))
  • 你为什么在想if(){}else{} 和内置函数,例如empty()不高效不简单?
  • @Vatev 谢谢队友。请把它作为答案,我会接受。

标签: php mysql


【解决方案1】:

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

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

【讨论】:

  • 轰隆隆。打败我:)
  • 看起来@Vatev 也击败了我
【解决方案2】:

array_filter 没有回调将删除所有评估为false 的元素。

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

【讨论】:

    【解决方案3】:

    试试 Vatev 的建议:

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

    【讨论】:

      【解决方案4】:

      使用变量名不会提高效率。

      如果你将它存储在一个数组中,你可能会变得更有效率,因为你的代码看起来不错,而不是真正的速度。

      例如:

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

      然后这样称呼它:

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

      不太好,但考虑到这种情况,我怀疑它会变得更漂亮。 :-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-25
        • 2010-11-18
        • 2015-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多