【问题标题】:How to add a comma for each string result and an "and" before the last result on PHP [duplicate]如何在PHP的最后一个结果之前为每个字符串结果添加一个逗号和一个“and”[重复]
【发布时间】:2014-02-27 11:04:45
【问题描述】:

我可以只使用 ifelseifmanually 来做到这一点,但如果我使用数组结果用逗号分隔它就不起作用...

所以,这就是我想要做的:

在 DB 上,成员有 3 种语言的这种格式:english, portuguese, spanish

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

这是打印结果的方式:

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

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

【问题讨论】:

  • 考虑如果列表只有 1 项会发生什么。
  • 我正在处理它,我正在使用 $acc_languages 结果创建一个数组并检查数组上是否只有一个值,如果它有超过 1 个值,那么我使用他的代码...我认为它会起作用:)

标签: php format comma


【解决方案1】:

您可以使用implodepreg_replace 的组合:

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

这会创建逗号来分隔它们,然后将最后一个更改为一个并且没有逗号。

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

【讨论】:

  • 感谢您的回答...但没有得到任何结果 D:,让我再试一下
  • 我会检查一下,看看有没有什么问题。
【解决方案2】:

从数组中取出最后一个元素,合并其他元素,然后在'and'之后添加最后一个元素:

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

【讨论】:

    【解决方案3】:

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

    <?php
    
    $list = "english, spanish, portugese";
    
    $list = substr_replace($list, " and", strrpos($list, ","), 1);
    
    echo $list;  //echos english, spanish and portugese
    
    ?>
    

    希望有帮助!!

    【讨论】:

    • 谢谢大家!它在这里工作!
    • 很高兴能帮上忙!
    【解决方案4】:

    真的很快:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2018-06-28
      • 2016-06-21
      相关资源
      最近更新 更多