分解問題以征服它:取出最後一個元素,創建逗號分隔列表,然後添加最後一個元素。
$array = array(
'apples',
'oranges',
'pineapples'
);
$last = array_pop($array);
echo implode(', ', $array), ' and ', $last; # apples, oranges and pineapples
自然,這隻有在數組中至少有兩個值時纔有意義。使用的功能:implode
Docs(在這種情況下可能比array_map
更合適)和array_pop
Docs。
在另一方面,如果該值不包含任何,
你可以先創建一個逗號分隔字符串的implode
函數,然後使用正則表達式與and
替換最後一個逗號。
這樣做也適用於少於2個元素的數組。我這樣做是在一個循環中,可以消除在每一步數組中的一個元素,使其顯示它的行爲方式:
$array = array(
'apples',
'oranges',
'pineapples'
);
foreach($array as $v)
{
echo preg_replace('(,([^,]*)$)', ' and$1', implode(', ', $array)), "\n";
array_pop($array);
}
輸出:
apples, oranges and pineapples
apples and oranges
apples
我承認使用「array_pop」發佈的@hakre是一種更乾淨的方式! – 2011-12-29 02:43:17