如何为每个字符串结果添加一个逗号,并在PHP上的最后一个结果之前添加“和”

时间:2014-02-27 02:47:53

标签: php format comma

我可以手动使用ifelseif,但如果我使用数组结果用逗号分隔,它就无效...

所以,这就是我要做的事情:

在数据库中,成员使用以下格式的3种语言:english, portuguese, spanish

如何以这种格式打印:english, portuguese and spanish

结果如下:

foreach($acc_languages as $list){
$languages = $list['lang'];
}

有一些“列表格式”可以在最后一个之前用“和”分隔值来添加逗号吗?

4 个答案:

答案 0 :(得分:3)

您可以使用implodepreg_replace的组合:

$languages = implode(', ', $acc_languages);
$languages = preg_replace('/, ([^,]*)$/',' and $1',$languages);

这会创建逗号来分隔它们,然后将最后一个更改为a而不使用逗号。

这也假设没有语言中包含逗号。

答案 1 :(得分:3)

抓住数组中的最后一个元素,合并其他项目,然后在'和'之后添加最后一个元素:

$lastLang = array_pop($acc_languages);
$languages = implode(', ',$acc_languages);
$languages .= ' and '.$lastLang;

答案 2 :(得分:2)

获取最后一个逗号的位置,然后将其替换为" and"字符串。

<?php

$list = "english, spanish, portugese";

$list = substr_replace($list, " and", strrpos($list, ","), 1);

echo $list;  //echos english, spanish and portugese

?>

希望有所帮助!!

答案 3 :(得分:0)

非常快:

foreach($acc_languages as $list){
    $languages = (($pos = strrpos($list['lang'],","))!==FALSE ? 
                   substr_replace($list['lang']," and",$pos,1) : $list['lang']);
}