PHP:在除最后一个元素之外的每个元素之后显示逗号。使用“for”语句而不使用“内爆/爆炸”

Posted

技术标签:

【中文标题】PHP:在除最后一个元素之外的每个元素之后显示逗号。使用“for”语句而不使用“内爆/爆炸”【英文标题】:PHP: Display comma after each element except the last. Using 'for' statement and no 'implode/explode' 【发布时间】:2011-02-21 10:41:54 【问题描述】:

我有这个简单的 for 循环来回显一个数组:

for ($i = 0; $i < count($director); $i++) 
   echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';

这里的问题是,当数组中有多个元素时,我会得到所有内容的回显,之间没有任何空格。我想用逗号分隔除最后一个之外的每个元素。

我无法使用implode,所以我正在寻找其他解决方案

【问题讨论】:

Tom Haigh 的回答应该有效。或者只是从结果字符串中删除最后一个字符(但可能不是一种干净的方式;))。 @SilentGhost:你为什么要标记这个作业?如果由于语句 I can't use 'implode' :OP访问一个数组,所以他需要循环。 implode 仅在您已经有一组要“内爆”的元素时才有效(当然可以事先生成 html 列表然后内爆,但这对我来说似乎没有必要)。 @Felix:因为不使用内爆的荒谬条件 @SilentGhost:看我之前的评论,我觉得你判断得太快了…… @felix:在这里使用implode 是合适的,我不明白为什么这个问题需要受到一些不合理的条件的限制。 【参考方案1】:

这应该可以。我认为最好调用一次count(),而不是每次循环迭代。

$count = count($director);
for ($i = 0; $i < $count; $i++) 
   echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';

   if ($i < ($count - 1)) 
      echo ', ';
   

【讨论】:

每个人总是通过检查$i &lt; ($count - 1);来做到这一点;我是唯一一个将检查移到主回声上方并检查$i != 0的人吗? @Michael Mrozek:那不会还是给你一个尾随逗号吗? 不,您添加的是前导逗号而不是尾随,但它会跳过第一个逗号,因此您不会得到“, stuff, stuff”。 for(...) if($i != 0) echo ", "; echo "stuff";【参考方案2】:
$number = count($director);
for ($i = 0; $i < $number; $i++) 
    echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
    if($i < $number - 1)
        echo ', ';
    

糟糕,我没有看到 Tom Haigh 的回复,我们的回复几乎相同。

【讨论】:

【参考方案3】:

这样的事情怎么样?您可能希望将“count($director)”的结果存储在循环外部的变量中,这样您就不必在每次运行循环时都浪费资源重新计算它。

for($i=0; $i<count($director);$i++)
   echo '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>';
   if($i!=count($director)-1)echo ',';

【讨论】:

【参考方案4】:

我的首选方法:

$links = [];
for ($i = 0; $i < count($director); $i++) 
  $links[] = '<a href="person.php?id='.$director[$i]["id"].'">' .
      $director[$i]["name"] . '</a>';

echo implode(', ', $links);

或者

$output = "";
for ($i = 0; $i < count($director); $i++) 
  if ($output) 
    $output .= ", ";
  
  $output .= '<a href="person.php?id='.$director[$i]["id"].'">' .
      $director[$i]["name"].'</a>';

echo $output;

【讨论】:

我也倾向于使用这个! :-) 不错。【参考方案5】:

如果我没记错 PHP 语法,这可能也会有所帮助:

$str = "";
for ($i = 0; $i < count($director); $i++) 
   $str .= '<a href="person.php?id='.$director[$i]["id"].'">'.$director[$i]["name"].'</a>, ';

$str = trim($str, ", ");

【讨论】:

你甚至可以rtrim() 而不是trim(),所以你肯定只能捕捉尾随逗号。【参考方案6】:

好吧,foreach 包含 for :-)

foreach ($director as $key => $person) 
    if ($key !== 0) echo ', ';
    echo '<a href="person.php?id='.urlencode($person['id']).'">'.$person['name'].'</a>';

【讨论】:

【参考方案7】:

更好的解决方案是完全避免循环。为了清楚起见,我忽略了建立链接。请注意,我不认为无法使用 implode 是一个条件。我相信这是一个简单的陈述,“我看不出如何使用 implode 来完成这项工作,所以我这样做了。”

$last_entry = array_pop($director);
if(count($director) > 0) 
    echo implode(", ", $director) . " and " . $last_entry;
 else 
    echo $last_entry;

【讨论】:

【参考方案8】:
for ( $i=0 ; $i < count($arr)-1 ; $i++ )

    echo ( $arr[$i]."," );

echo ( $arr[count($arr)-1] );

【讨论】:

【参考方案9】:
// RENAMED $director to $directors

$links = '';
foreach ($directors AS $director) 
    $links .= "<a href=\"person.php?id=director['id']\">$director['name']</a>";
    if (true !== empty($links)) 
        $links .= ', ';
    


echo $links;

【讨论】:

【参考方案10】:
foreach ($strings as $string)
    $superstring .= $string . ', ';

$echostring = substr_replace($superstring ,"",-2);
echo $echostring;

【讨论】:

【参考方案11】:

这是我的 2 行解决方案

// Create your Array
$cities = Array("Rome", "Florence", "Venice");

// implode them
$list = trim(implode (", ", $cities))  ;
// remove last comma
$list = substr ( $list,0 ,strlen( $list ) );

//check result
die ($list);

【讨论】:

【参考方案12】:

$count =1; for ($i = 0; $i 如果 ($count!=1) 回声','; echo ''.$director[$i]["name"].''; $计数++;

【讨论】:

以上是关于PHP:在除最后一个元素之外的每个元素之后显示逗号。使用“for”语句而不使用“内爆/爆炸”的主要内容,如果未能解决你的问题,请参考以下文章

如何将逗号添加到字符串中除最后一项之外的所有内容

特殊套管最后一个元素的最佳循环成语

如果ArrayList的最后一个元素如何排除字符附加

C/C++,Java,PHP,JavaScript,Json数组对象赋值时,最后一个元素后面是否可以带逗号?

R:在输出的每个元素之后插入逗号[重复]

有没有办法为“除第一个/最后一个之外的所有元素”指定CSS简写?