このような操作のためにループを回避する必要があります。これらのループは、不要なレベルの複雑さをコードに追加します。
// put the last element of $data to $lastName, and remove the last element from $data
$lastName = array_pop($names);
echo join(',',$names) . ' and ' . $lastName;
は次のようにも多くの1つのラインのバリエーションがあります。
// replace the last ",name" with " and name"
echo preg_replace('/(,)[a-z]+$/', ' and ', join(',', $names));
しかし、彼らは経験の浅いPHP開発者に非常に明確ではありません。
編集あなたが既にあなたの例で持っている配列を捨てて喜んでいるなら、これを行うことができます。
$str = "mathews,neil,ambrose,glen,ethan";
$names = array_slice(explode(',', $str), 0, 3);
$lastName = array_pop($names);
echo join(',', $names) . ' and ' . $lastName;
私は同意しますが、ここでは最初の3つの名前が必要です。追加して二番目の名前の後に..私はループなしでこれを行う方法? – leon
ループを保っていれば、そこには3つの名前があります。次に、結果の$ names配列に上記の例のいずれかを使用します。 – xzyfer
あなたがすでに提供しているコードを捨ててもよければ、私の最後の例ができます。 – xzyfer