PHP İşlev Strings Katıl?

4 Cevap php
join_strings(string $glue, string $var, string $var2 [, string $...]);

Ben yukarıda kavramsallaştırma işlevine benzer davranır şey arıyorum. Fonksiyonel bir örnek olacaktır:

$title = "Mr.";
$fname = "Jonathan";
$lname = "Sampson";

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

Dokümantasyonu hızlı bir bakış-over verdikten sonra, bunu yapar bir şey görmedim. Aklıma yakın diziler üzerinde çalışır implode (), - ben ilk bir diziye dizeleri eklemek zorunda, ve sonra implode olacaktır.

Bunu başarmak için var, ya da ben sıfırdan bir yazar gerekir bir yöntem zaten var mı?

Note: (.) ​​Ben birleştirme aşina değilim, ve bina-birleştirme (=.). Ben (bu işlevin içinde yer alacağını) yapmak isteyen değilim. Benim niyetim sadece bir kez $ tutkal değişken yazmak için vardır. Değil her değiştirgelidir birkaç kez.

4 Cevap

Bu deneyin:

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;
}

EDIT: öneri Yorumlamak için Geliştirilmiş fonksiyon sayesinde

Ben kabul cevabı ile kabul ederken, bu article şu görmek implode katılmak daha hızlı olduğunu söylüyor.

You'll have to use the dot "." operator. This comes from abstract algebra theory, the strings being a monoid with respect to the concatenation operator, and the fact that when dealing with algebraic structures the dot is usually used as a generic operator (the other being "+", which you may have seen used in other languages).

Hızlı başvuru için, bir monoid'e olmanın operasyon birleşim ima, ve (bizim durumumuzda boş dize) bir kimlik unsuru var olduğunu.