首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用",“内爆数组,并在最后一项前添加"and”

使用",“内爆数组,并在最后一项前添加"and”
EN

Stack Overflow用户
提问于 2011-12-21 15:01:23
回答 15查看 47.6K关注 0票数 82

这个数组包含一个条目列表,我想把它转换成一个字符串,但是我不知道如何让最后一个条目前面有一个&/,而不是逗号。

代码语言:javascript
复制
1 => coke 2=> sprite 3=> fanta

应该变成

代码语言:javascript
复制
coke, sprite and fanta

这是常规的内爆函数:

代码语言:javascript
复制
$listString = implode(', ', $listArrau);

做这件事最简单的方法是什么?

EN

回答 15

Stack Overflow用户

发布于 2014-07-31 19:38:54

我不确定one liner是这个问题最优雅的解决方案。

我在一段时间前写了这段代码,并根据需要将其放入:

代码语言:javascript
复制
/**
 * Join a string with a natural language conjunction at the end. 
 * https://gist.github.com/angry-dan/e01b8712d6538510dd9c
 */
function natural_language_join(array $list, $conjunction = 'and') {
  $last = array_pop($list);
  if ($list) {
    return implode(', ', $list) . ' ' . $conjunction . ' ' . $last;
  }
  return $last;
}

您不必使用" and“作为您的连接字符串,它是有效的,可以处理从0到无限数量的任何项:

代码语言:javascript
复制
// null
var_dump(natural_language_join(array()));
// string 'one'
var_dump(natural_language_join(array('one')));
// string 'one and two'
var_dump(natural_language_join(array('one', 'two')));
// string 'one, two and three'
var_dump(natural_language_join(array('one', 'two', 'three')));
// string 'one, two, three or four'
var_dump(natural_language_join(array('one', 'two', 'three', 'four'), 'or'));
票数 100
EN

Stack Overflow用户

发布于 2011-12-21 15:05:46

您可以弹出最后一项,然后将其与文本连接起来:

代码语言:javascript
复制
$yourArray = ('a', 'b', 'c');
$lastItem = array_pop($yourArray); // c
$text = implode(', ', $yourArray); // a, b
$text .= ' and '.$lastItem; // a, b and c
票数 29
EN

Stack Overflow用户

发布于 2013-11-26 20:33:21

试试这个:

代码语言:javascript
复制
$str = array_pop($array);
if ($array)
    $str = implode(', ', $array)." and ".$str;
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8586141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档