我知道如何使用foreach遍历数组的项并附加逗号,但是必须取下最后的逗号总是很痛苦的。有没有简便的PHP方式?
$fruit = array('apple', 'banana', 'pear', 'grape');
最终我想要
$result = "apple, banana, pear, grape"
我知道如何使用foreach遍历数组的项并附加逗号,但是必须取下最后的逗号总是很痛苦的。有没有简便的PHP方式?
$fruit = array('apple', 'banana', 'pear', 'grape');
最终我想要
$result = "apple, banana, pear, grape"
Answers:
您想为此使用爆破。
即:
$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
编辑:根据@joseantgv的评论,您应该能够rtrim()
从上面的示例中删除。即:
$string = implode(',', $arr);
rtrim()
。我记得在字符串末尾有多余的逗号是有问题的,但是我不记得它正在发生的情况。
结果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
与劳埃德(Lloyd)的答案类似,但适用于任何大小的数组。
$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."
}
我更喜欢在FOR循环中使用IF语句,该语句检查以确保当前迭代不是数组中的最后一个值。如果不是,请添加逗号
$fruit = array("apple", "banana", "pear", "grape");
for($i = 0; $i < count($fruit); $i++){
echo "$fruit[$i]";
if($i < (count($fruit) -1)){
echo ", ";
}
}
$fruit = array('apple', 'banana', 'pear', 'grape');
$commasaprated = implode(',' , $fruit);
$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