代码之家  ›  专栏  ›  技术社区  ›  Sampson

PHP函数连接字符串?

  •  2
  • Sampson  · 技术社区  · 15 年前
    join_strings(string $glue, string $var, string $var2 [, string $...]);
    

    我正在寻找一些行为类似于我上面概念化的函数的东西。一个功能示例是:

    $title = "Mr.";
    $fname = "Jonathan";
    $lname = "Sampson";
    
    print join_strings(" ", $title, $fname, $lname); // Mr. Jonathan Sampson
    

    在对文档进行快速查看之后,我没有看到任何与此相关的内容。我能想到的最接近的方法是内爆(),它在数组上运行-因此我必须首先将字符串添加到数组中,然后内爆。

    是否已经有一种方法可以实现这一点,或者我需要从头开始编写一个?

    笔记 :我熟悉连接(.)和构建连接(.=)。我不想这样做(那将在函数中发生)。我的意图是只编写一次$glue变量。每次连接都不会出现几次。

    6 回复  |  直到 15 年前
        1
  •  21
  •   bumperbox    15 年前

    您可以使用join或introde,两者的作用相同 正如你所说,它需要是一个数组,这并不困难

    join($glue, array($va1, $var2, $var3));
    
        2
  •  8
  •   mercator    15 年前

    你可以用 func_get_args() implode() (或其别名) join() )服从你的意志:

    function join_strings($glue) {
        $args = func_get_args();
        array_shift($args);
        return implode($glue, $args);
    }
    

    作为 func_get_args() 但请注意:

    返回一个数组,其中每个元素都是当前用户定义函数的参数列表的相应成员的副本。

    所以,您仍然会使用参数生成一个数组,然后将其传递给其他人,除非现在您让PHP为您处理这个问题。

    你是否有比你问题中的例子更令人信服的例子来证明不只是使用 内爆() 直接地

    array() 关于变量,但实际上比 _strings 您将其附加到函数名。

        3
  •  3
  •   luiscubal    15 年前

    试试这个:

    function join_strings($glue, $arg){
       $args = func_get_args();
       $result = "";
       $argcount = count($args)
       for($i = 1; $i < $argcount; $i++){
           $result .= $args[$i];
           if($i+1!=count($args){
               $result .= $glue;
           }
       }
       return $result;
    }
    

    编辑:由于评论建议,功能得到了改进

        4
  •  2
  •   iBiryukov    15 年前
    $a="hi";
    $b = " world";
    echo $a.$b;
    
        5
  •  0
  •   Dave Archer    15 年前

    article 也就是说,内爆比加入快。

        6
  •  -1
  •   Agos    15 年前

    您必须使用点“.”运算符。

    为了快速参考,作为一个幺半群意味着操作的关联性,并且存在一个标识元素(在本例中为空字符串)。