[英]How do I create a comma-separated list from an array in PHP?
我知道如何使用 foreach 遍历数组的项目并附加一个逗号,但是必须去掉最后一个逗号总是很痛苦的。 有没有一种简单的 PHP 方法可以做到这一点?
$fruit = array('apple', 'banana', 'pear', 'grape');
最终我想要
$result = "apple, banana, pear, grape"
你想为此使用内爆。
即: $commaList = implode(', ', $fruit);
有一种方法可以在没有尾随的情况下附加逗号。 如果您必须同时进行一些其他操作,您会想要这样做。 例如,也许你想引用每个水果,然后用逗号分隔它们:
$prefix = $fruitList = '';
foreach ($fruits as $fruit)
{
$fruitList .= $prefix . '"' . $fruit . '"';
$prefix = ', ';
}
此外,如果您只是以“正常”方式在每个项目后附加逗号(就像您之前所做的那样),并且您需要修剪最后一个,只需执行$list = rtrim($list, ', ')
. 在这种情况下,我看到很多人不必要地使用substr
。
这就是我一直在做的事情:
$arr = array(1,2,3,4,5,6,7,8,9);
$string = rtrim(implode(',', $arr), ',');
echo $string;
输出:
1,2,3,4,5,6,7,8,9
现场演示:http: //ideone.com/EWK1XR
编辑:根据@josantgv 的评论,您应该能够从上面的示例中删除rtrim()
。 IE:
$string = implode(',', $arr);
结果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
类似于劳埃德的答案,但适用于任何大小的数组。
$missing = array();
$missing[] = 'name';
$missing[] = 'zipcode';
$missing[] = 'phone';
if( is_array($missing) && count($missing) > 0 )
{
$result = '';
$total = count($missing) - 1;
for($i = 0; $i <= $total; $i++)
{
if($i == $total && $total > 0)
$result .= "and ";
$result .= $missing[$i];
if($i < $total)
$result .= ", ";
}
echo 'You need to provide your '.$result.'.';
// Echos "You need to provide your name, zipcode, and phone."
}
$fruit = array('apple', 'banana', 'pear', 'grape');
$commasaprated = implode(',' , $fruit);
我更喜欢在 FOR 循环中使用 IF 语句来检查以确保当前迭代不是数组中的最后一个值。 如果不是,请添加逗号
$fruit = array("apple", "banana", "pear", "grape");
for($i = 0; $i < count($fruit); $i++){
echo "$fruit[$i]";
if($i < (count($fruit) -1)){
echo ", ";
}
}
有时,在某些情况下,您甚至不需要 php(例如,列表项在渲染时都在它们自己的通用标记中)如果在渲染后它们是单独的元素,您总是可以通过 css 向所有元素添加逗号,但最后一个子元素从剧本。
我在主干应用程序中经常使用它来修剪一些任意代码:
.likers a:not(:last-child):after { content: ","; }
基本上查看元素,定位除最后一个元素之外的所有元素,并在每个项目之后添加一个逗号。 如果情况适用,这只是一种根本不必使用脚本的替代方法。
一个功能性的解决方案是这样的:
$fruit = array('apple', 'banana', 'pear', 'grape');
$sep = ',';
array_reduce(
$fruits,
function($fruitsStr, $fruit) use ($sep) {
return (('' == $fruitsStr) ? $fruit : $fruitsStr . $sep . $fruit);
},
''
);
关注这个
$teacher_id = '';
for ($i = 0; $i < count($data['teacher_id']); $i++) {
$teacher_id .= $data['teacher_id'][$i].',';
}
$teacher_id = rtrim($teacher_id, ',');
echo $teacher_id; exit;
如果做引用的答案,你可以做
$commaList = '"'.implode( '" , " ', $fruit). '"';
以上假设水果是非空的。 如果您不想做出这样的假设,您可以使用 if-then-else 语句或三元 (?:) 运算符。
我知道如何使用 foreach 循环遍历数组的项目并附加一个逗号,但是必须去掉最后一个逗号总是很痛苦。 有没有一种简单的 PHP 方法来做到这一点?
$fruit = array('apple', 'banana', 'pear', 'grape');
最终我想要
$result = "apple, banana, pear, grape"
$letters = array("a", "b", "c", "d", "e", "f", "g"); // this array can n no. of values
$result = substr(implode(", ", $letters), 0);
echo $result
输出-> a,b,c,d,e,f,g
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.