2011-08-31 55 views
2

什麼是PHP中將數組格式化爲一個包含逗號和「last」元素之前的單詞的有效方法?使用「and」生成PHP列表

$array = Array('a','b','c','d'); 

我想產生字符串 「A,B,c和d」

回答

2

我會修改$array的地方加入了"and",然後加入用逗號分隔的部分輸出:

array_push($array, " and " . array_pop($array)); 
print join(", ", $array); 

但是你可能也只是使用array_pop到最後一個條目分開,加入剩下的,然後追加「和」和最後一個項目。

+0

小心謹慎:如果您將此作爲通用函數並將其傳遞給它,元素數組,這將返回'和a'。兩個元素將返回'a和b'。這可能是也可能不是你喜歡的。 – joshuahedlund

0

有多種方式,你可以做到這一點,這裏是一個:

<? 

$array = Array('a','b','c','d'); 

$string=implode(',',$array); 

$nstring=substr_replace($string,' and ', -1, 0); 

echo $nstring; 
+0

忘記了逗號後的空格;-) –

+0

代碼中的'-1'是什麼? – zerkms

+0

這隻適用於最後一個元素只有一個字符! – user774528

2

我假設應該這樣做:

$array[ sizeof($array) - 1 ] = 'and ' . $array[ sizeof($array) - 1 ]; 
$list = implode(', ', $array); 
+0

由於某種原因,我認爲''和'不應該以逗號爲前綴,比如'a,b和c' – zerkms

+0

@zerkms逗號在這裏是可選的 – sanmai

+0

@sanmai:是的,但被指定它看起來不自然imho – zerkms

0
<?php 

$array = Array('a','b','c','d'); 

$array[count($array)-1] = 'and '.$array[count($array)-1]; 
echo implode($array, ', '); 

?> 

http://codepad.org/7oeni6xv

0

嘗試:

function arrayEnum($array) 
{ 
    $string = ''; 
    for (i = 0, $l = count($array); i < $l; ++i) 
    { 
     $string .= $array[$i]; 
     if (i != ($l -1)) $string .= ', '; 
     if (i == ($l -2)) $string .= 'and ' 
    } 
} 

$array = Array('a','b','c','d'); 
echo $array; // a, b, c, and d 
$array = Array('one','two','three','four'); 
echo $array; // one, two, three and four 

該函數將與數據的任何長度工作。