这实际上可能是一个css问题,但我希望不是因为我希望在IE中使用它。
我有以下循环:
<?php
if ($category)
{
foreach($category as $item)
{
echo $item['name'];
echo ", ";
}
} ?>
哪个应输出
项目,项目,项目,项目,
唯一的事情是......我想在最后一项之后没有逗号。在循环中有没有办法做到这一点?
答案 0 :(得分:7)
为了保持你的代码是这样的,你可以添加一个计数器,然后跳过最后一个。
<?php
if ($category) {
$counter = 0;
foreach($category as $item)
{
$counter++;
echo $item['name'];
if ($counter < count($category)) {
echo ", ";
}
}
}
?>
或者你可以做得更多,更快,更快:
<?php echo implode(", ", array_map(create_function('$item', 'return $item["name"];'), $category)); ?>
答案 1 :(得分:4)
不要立即回声,而是将输出保存到可以修剪的变量中。
<?php
if ($category) {
$output = '';
foreach($category as $item) {
$output .= $item['name'];
$output .= ", ";
}
echo rtrim($output, ', ');
}
?>
答案 2 :(得分:2)
implode
解决方案是最简单的,但是你要求循环。此方法避免在循环中添加额外的条件,因此应该更有效。基本上,不是为最后一项做不同的事情,而是为第一项做不同的事情。
$myArray = array(); //Fill with whatever
$result = $myArray[0];
for ($idx = 1; $idx < count($myArray); $idx += 1)
{
$result .= ', ' . $myArray[$idx];
}
编辑:在意识到你想要$ item ['name']而不是$ item:
之后$myArray = array(); //Fill with whatever
$result = $myArray[0]['name'];
for ($idx = 1; $idx < count($myArray); $idx += 1)
{
$result .= ', ' . $myArray[$idx]['name'];
}
答案 3 :(得分:1)
和foreach
一样可爱,......
<?php
if ($category) {
$count = count($category) - 1;
for ($i = 0; $i <= $count; $i++) {
echo $category[$i]['name'];
if ($i < $count)
echo ', ';
}
}
?>
... for
有时是必要的。
答案 4 :(得分:1)
假设$category
是一个数组,您可以使用implode来获得所需内容:
编辑错过$ categories ['name']部分,这应该有效:
<?php implode(", ", array_keys($category, 'name')); ?>
答案 5 :(得分:1)
“最后一个逗号”问题的标准解决方案是将项目放入数组然后内爆:
$temp = array();
foreach($category as $item)
$temp[] = $item['name'];
echo implode(', ', $temp);
如果您希望这更通用,您还可以编写一个从每个子阵列中挑选(“摘取”)特定字段的函数:
function array_pluck($ary, $key) {
$r = array();
foreach($ary as $item)
$r[] = $item[$key];
return $r;
}
然后只是
echo implode(', ', array_pluck($category, 'name'));
答案 6 :(得分:0)
另一种选择:
<?php
$out = "";
foreach ($category as $item)
{
$out .= $item['name']. ", ";
}
$out = preg_replace("/(.*), $/", "$1", $out);
echo $out;
?>
答案 7 :(得分:0)
或者您可以检查最后一个键:
end($category); $lastkey = key($category); foreach ( $category AS $key => $item ) { echo $item['name']; if ( $lastkey != $key ) { echo ', '; } }