foreachを使用して配列の項目をループし、コンマを追加する方法を知っていますが、常に最後のコンマを削除するのは面倒です。それを行う簡単なPHPの方法はありますか?
$fruit = array('apple', 'banana', 'pear', 'grape');
最終的に欲しい
$result = "apple, banana, pear, grape"
foreachを使用して配列の項目をループし、コンマを追加する方法を知っていますが、常に最後のコンマを削除するのは面倒です。それを行う簡単なPHPの方法はありますか?
$fruit = array('apple', 'banana', 'pear', 'grape');
最終的に欲しい
$result = "apple, banana, pear, grape"
回答:
これには、分解を使用します。
つまり:
$commaList = implode(', ', $fruit);
末尾にコンマを付けずにコンマを追加する方法があります。同時に他の操作を行う必要がある場合は、これを行う必要があります。たとえば、各果物を引用し、それらすべてをコンマで区切る場合があります。
$prefix = $fruitList = '';
foreach ($fruits as $fruit)
{
$fruitList .= $prefix . '"' . $fruit . '"';
$prefix = ', ';
}
また、各項目の後にカンマを追加する「通常の」方法(以前に行ったように聞こえるように)だけを行い、最後の項目を切り捨てる必要がある場合は、次のようにします$list = rtrim($list, ', ')
。多くの人substr
がこの状況で不必要にいじくり回しているのを見ます。
これは私がそれをやってきた方法です:
$arr = array(1,2,3,4,5,6,7,8,9);
$string = rtrim(implode(',', $arr), ',');
echo $string;
出力:
1,2,3,4,5,6,7,8,9
ライブデモ:http : //ideone.com/EWK1XR
編集: @joseantgvのコメントに従ってrtrim()
、上記の例から削除できるはずです。すなわち:
$string = implode(',', $arr);
rtrim()
。文字列の最後に余分なコンマがあることで問題があったことを思い出しましたが、それが起こっていた状況を思い出せません。
and
最後の結果:
$titleString = array('apple', 'banana', 'pear', 'grape');
$totalTitles = count($titleString);
if ($totalTitles>1) {
$titleString = implode(', ', array_slice($titleString, 0, $totalTitles-1)) . ' and ' . end($titleString);
} else {
$titleString = implode(', ', $titleString);
}
echo $titleString; // apple, banana, pear and grape
ロイドの回答に似ていますが、任意のサイズの配列で機能します。
$missing = array();
$missing[] = 'name';
$missing[] = 'zipcode';
$missing[] = 'phone';
if( is_array($missing) && count($missing) > 0 )
{
$result = '';
$total = count($missing) - 1;
for($i = 0; $i <= $total; $i++)
{
if($i == $total && $total > 0)
$result .= "and ";
$result .= $missing[$i];
if($i < $total)
$result .= ", ";
}
echo 'You need to provide your '.$result.'.';
// Echos "You need to provide your name, zipcode, and phone."
}
私は、現在の反復が配列の最後の値でないことを確認するために確認するFORループでIFステートメントを使用することを好みます。そうでない場合は、カンマを追加します
$fruit = array("apple", "banana", "pear", "grape");
for($i = 0; $i < count($fruit); $i++){
echo "$fruit[$i]";
if($i < (count($fruit) -1)){
echo ", ";
}
}
場合によっては、特定のインスタンスでこれを行うためにphpが不要なこともあります(たとえば、リストアイテムは、レンダリング時に独自の汎用タグに含まれます)レンダリング後に個別の要素である場合、CSSを介してすべての要素に常にコンマを追加できます。スクリプトから。
私は実際にバックボーンアプリでこれをよく使用して、任意のコード脂肪をトリミングします。
.likers a:not(:last-child):after { content: ","; }
基本的に要素を調べ、最後の要素を除くすべてを対象とし、各項目の後にコンマを追加します。ケースが当てはまる場合にスクリプトをまったく使用する必要がない代替方法です。
$fruit = array('apple', 'banana', 'pear', 'grape');
$commasaprated = implode(',' , $fruit);