web-dev-qa-db-ja.com

foreachループから最後のコンマを削除する

Foreachループを使用してデータベースからいくつかの値をエコーアウトし、それぞれをコンマで区切りますが、最後の値に追加された最後のコンマを削除する方法がわかりません。

私のコードは非常に単純ですが、これを行う正しい方法を見つけることができないようです。

foreach ($this->sinonimo as $s){ 

echo '<span>'.ucfirst($s->sinonimo).',</span>';

}

助けてくれてありがとう:)

11
MONZTAAA

値を配列に入れてから、その配列をコンマでimplodeします(+スペースをすっきりさせます)。

$myArray = array();
foreach ($this->sinonimo as $s){ 
    $myArray[] = '<span>'.ucfirst($s->sinonimo).'</span>';
}

echo implode( ', ', $myArray );

これにより、各値の間にコンマが挿入されますが、最後には配置されません。また、この場合、コンマは次のようにスパンの外側になります。

<span>Text1<span>, <span>Text2<span>, <span>Text3<span>
25
Sébastien

コードのもう1つのアプローチは、ビットロジックです。

hasComma = false;
foreach ($this->sinonimo as $s){ 
    if (hasComma){ 
        echo ","; 
    }
    echo '<span>'.ucfirst($s->sinonimo).'</span>';
    hasComma=true;
}
7
Jorge Campos

私は通常、そのようなユースケースにロジックを追加しないようにします。最良の方法は、値を配列に格納し、それをコンマで内破することです。

ただし、CSSでカンマを追加する方がはるかに簡単です。

あなたの素敵でクリーンなループ:

foreach($collection->object as $data)
{
    echo "<span>" . $data->var . "</span>";
}

そしてCSSの場合:

.selector span:after {
    content: ",";
}
.selector span:last-child:after {
    content: "";
}

これは、IE8以降を含むすべての主要なブラウザーで機能します。

6
aebersold

Laravelにはphpimplode()と同じimplode()関数があります。

Collectionオブジェクトでimplode()関数を使用する必要があります。

$user->posts->implode('title', ', ');

出力は次のようになります。

Hello world!, First post, Second post
3
ivahidmontazer

@Sébastienの答えの代わりに、これを行うことができます:

echo "<span>".ucfirst($this->sinonimo[0]);
for($i = 1; $i < count($this->sinonimo); $i++) {
    echo "</span>, <span>" . ucfirst($this->sinonimo[$i]);
}
echo "</span>";

これには追加の配列は必要ありません。これは、最初に最初の要素を印刷し、次にループで中間セグメントを印刷し、次に次の要素を印刷し、最後のセグメントですべてを閉じることによって機能します。

3
Thom Wiggers

uはトリム機能を使用できます。あなたの文字列がこのようなものだとしましょう

$str=1,2,3,4,5,6,7,8,

あなたはこれを試すことができます

echo trim($str, ",");

そして出力は

1,2,3,4,5,6,7,8
1
Shuhad zaman

substr()関数を使用します

最終的な文字列をsubstr()関数に入れます

 $string = "";
    while ($row = mysql_fetch_array($result)) {
      $string .= $name . ', ';
    }
    echo substr($string, 0, strlen($string) - 2);
1
Sohil Shingala

リレーショナルデータ用のLaravelimplode()関数。

投稿のように多くのカテゴリがあります。

$user->posts->implode('categories.name', ', '); // In loop {{  $post->categories->name }}
0
Nadeem0035