2011-11-09 10 views
7

不確定な数の文字列を連結する必要があります。隣接する2つの文字列の間にスペースが必要です。ようにa b c d e fPHPで文字列を連結する最良の方法

また、先頭と末尾に空白を入れたくないのですが、これをPHPで行うにはどうすればよいですか?

+0

これらの文字列をどのように保存しますか?それらは配列にありますか?あるいは、別々の変数で? – kapa

+0

これらは別々の変数です.vriableが設定されていない場合、または空の文字列の場合は、連結された文字列に含める必要はありません。 – freshest

+0

@freshestどのように変数が生成されますか?自由変数の代わりに配列に値を入れることはできませんか? – deviousdodo

答えて

25

$str = implode(' ', array('a', 'b', 'c', 'd', 'e', 'f'));を意味しますか?あなたは将来の変更のためのプロセスを制御することができ、このように

$res = ""; 
foreach($strings as $str) { 
    $res.= $str." "; 
} 

if(strlen($res > 0)) 
    $res = substr($res,-1); 

+0

ありがとうございました。 – freshest

1

あなたは配列に収集されたすべてのこれらの文字列を持っていることを考慮すると、方法は、それは同様のforeach文の谷することができません。

+3

あなたが 'implode()'を持っているときに、サウンドが過剰です。 – kapa

+0

私は知っていますが、私は通常、物事を開いて制御して、未知のデータ型に直面しているときにいつでも変更を加える自由を与えています。今は文字列ですが、私はそのような自由を持つことが好きです。私はいつも、それを単純なimplode/joinに変更する時間があります。 – holographix

+1

あなたの解決法( 'foreach'の使用法)は、文字列が配列内にあるとみなします。 'implode'の使い方は、文字列が配列内にあると仮定します。私はここで自由を見ません、私は読みやすさを減らす不必要な線の束を参照してください。 – kapa

3
$strings = array(" asd " , NULL, "", " dasd ", "Dasd ", "", "", NULL); 

function isValid($v){ 
return empty($v) || !$v ? false : true; 
} 

$concatenated = trim(implode(" ", array_map("trim", array_filter($strings, "isValid")))); 

//"asd dasd Dasd" 
3
function concatenate() 
{ 
    $return = array(); 
    $numargs = func_num_args(); 
    $arg_list = func_get_args(); 
    for($i = 0; $i < $numargs; $i++) 
    { 
     if(empty($arg_list[$i])) continue; 
     $return[] = trim($arg_list[$i]); 
    } 
    return implode(' ', $return); 
} 

echo concatenate("Mark ", " as ", " correct"); 
2

簡単な方法は次のとおりです。

$string="hello" . " " . "world"; 
2
私はちょうどのがケースがある場合は、アレイ内の空の文字列があることをことを答えるdeviousdodoに追加する

、あなたがしたくないこれらは、 "a、b ,, d ,, f"のような連結された文字列に現れるようにするには、以下を使用する方が良いでしょう:

$ str = implode( '、'、array_filter(array( 'a'、 'b'、 ''、 'd'、 ''、 'f'))));

関連する問題