如何在PHP中从数组创建逗号分隔列表?

st4*_*l0w 105 php arrays

我知道如何使用foreach循环遍历数组的项目并附加逗号,但是总是很难取下最后一个逗号.有一种简单的PHP方式吗?

$fruit = array('apple', 'banana', 'pear', 'grape');
Run Code Online (Sandbox Code Playgroud)

最终我想要

$result = "apple, banana, pear, grape"
Run Code Online (Sandbox Code Playgroud)

rye*_*guy 219

你想为此使用内.

即: $commaList = implode(', ', $fruit);


有一种方法可以在没有尾随的情况下附加逗号.如果你必须同时做一些其他的操作,你会想要这样做.例如,您可能想要引用每个水果,然后用逗号分隔它们:

$prefix = $fruitList = '';
foreach ($fruits as $fruit)
{
    $fruitList .= $prefix . '"' . $fruit . '"';
    $prefix = ', ';
}
Run Code Online (Sandbox Code Playgroud)

另外,如果你只是在每个项目之后添加逗号的"正常"方式(就像你之前听到的那样),你需要修剪掉最后一个,就这样做$list = rtrim($list, ', ').substr在这种情况下,我看到很多人不必要地捣乱.

  • 更有意义的是(如果尝试添加引号)来调用<code> $ fruitlist ='"'.implode('","',$ fruit).'"'; </ code> (4认同)

Nat*_*ate 37

这就是我一直在做的事情:

$arr = array(1,2,3,4,5,6,7,8,9);

$string = rtrim(implode(',', $arr), ',');

echo $string;
Run Code Online (Sandbox Code Playgroud)

输出:

1,2,3,4,5,6,7,8,9
Run Code Online (Sandbox Code Playgroud)

现场演示:http://ideone.com/EWK1XR

编辑: Per @joseantgv的评论,你应该能够rtrim()从上面的例子中删除.即:

$string = implode(',', $arr);
Run Code Online (Sandbox Code Playgroud)

  • 如上所述,你可以做内爆(',',$ arr) (5认同)

Waq*_*gir 5

结果and最后:

$titleString = array('apple', 'banana', 'pear', 'grape');
$totalTitles = count($titleString);
if ($totalTitles>1) {
    $titleString = implode(', ', array_slice($titleString, 0, $totalTitles-1)) . ' and ' . end($titleString);
} else {
    $titleString = implode(', ', $titleString);
}

echo $titleString; // apple, banana, pear and grape
Run Code Online (Sandbox Code Playgroud)