1. ホーム
  2. php

[解決済み] 配列を", "でインプロードし、最後の項目の前に "and "を追加する。

2023-06-02 04:10:56

質問

この配列は項目のリストを保持しており、それを文字列にしたいのですが、最後の項目の前にカンマではなく &/and を付ける方法が分かりません。

1 => coke 2=> sprite 3=> fanta

は、次のようになります。

coke, sprite and fanta

これは通常のimplode関数です。

$listString = implode(', ', $listArrau);

簡単な方法は?

どのように解決するのですか?

任意の個数で動作するロングライナーです。

echo join(' and ', array_filter(array_merge(array(join(', ', array_slice($array, 0, -1))), array_slice($array, -1)), 'strlen'));

あるいは、もし 本当に を好むなら、その冗長性を利用することもできます。

$last  = array_slice($array, -1);
$first = join(', ', array_slice($array, 0, -1));
$both  = array_filter(array_merge(array($first), $last), 'strlen');
echo join(' and ', $both);

ポイントは、このスライス、マージ、フィルタリング、結合の処理で すべて のケースを、0、1、2 のアイテムを含めて、余分な if..else ステートメントなしで、0と2の項目を含むすべてのケースを正しく表示します。そして、それはたまたまワンライナーに折り畳むことができます。