防止在循环中呈现最后一个分隔符

时间:2011-10-03 18:09:19

标签: php

我有以下代码:

if(hasRows($resultC)){
    while($row = mysql_fetch_row($resultC)) {
        $mescategories = '<span><a href="' . CalRoot . 
            '/index.php?com=searchresult&amp;t=' . $row[0] . 
            '" rel="tag" class="eventMain">' . cOut($row[1]) . '</a></span> | ' ;
        echo $mescategories; 
    }//end while
}//end if

渲染输出如下:

cat 1 | cat 2 | cat 3 | cat 4 | 

如何阻止呈现最后一个|字符。

7 个答案:

答案 0 :(得分:5)

$catArray = array();
if(hasRows($resultC)){
    while($row = mysql_fetch_row($resultC)){
        array_push($catArray, '<span><a href="' . CalRoot . '/index.php?com=searchresult&amp;t=' . $row[0] . '" rel="tag" class="eventMain">' . cOut($row[1]) . '</a></span>');
    }//end while
    echo implode('|', $catArray);
}//end if

答案 1 :(得分:3)

您可以使用mysql_num_rows($resultC)计算行数,并在循环中设置计数器。或者,我这样做的方式如下:

if(hasRows($resultC)){
    // Create an empty array
    $links = array( );

    while($row = mysql_fetch_row($resultC)){
        // Add each text link to the array
        $links[] = '<span><a href="' . CalRoot . '/index.php?com=searchresult&amp;t=' . $row[0] . '" rel="tag" class="eventMain">' . cOut($row[1]) . '</a></span>' ;    
    }
    // "Glue" the array back together using implode, with the separator between each.
    echo implode(' | ', $links );
}

答案 2 :(得分:2)

$i = 0; //set before while loop
$i++; //inserted into while loop
if ($i != mysql_num_rows($resultC) ) { //inserted into while loop
  $mescategories .= " | " ;
}

mysql_num_rows将告诉查询中有多少行,然后将追加除最后一行之外的每一行的管道字符。

编辑:我认为$ i ++应该在if语句之前,实际上。

答案 3 :(得分:2)

如何处理条件陈述。计算行的大小,如果$ count = $ maxcount则不回显“|”字符。

答案 4 :(得分:1)

我没有检查你的格式。刚刚添加了“第一个”变量。

if(hasRows($resultC)){
    $first = true;
    while($row = mysql_fetch_row($resultC)){
        $mescategories = ' '.($first ? "":"|").' <span><a href="' . CalRoot . '/index.php?com=searchresult&amp;t=' . $row[0] . '" rel="tag" class="eventMain">' . cOut($row[1]) . '</a></span> ' ;
        echo $mescategories; 
        $first = false;
    }//end while
}//end if

答案 5 :(得分:1)

if(hasRows($resultC)){
$i=0;
while($row = mysql_fetch_row($resultC)){
    $spaceline  =($i>0) ? '|' : '';
    $mescategories = '<span><a href="' . CalRoot . '/index.php?com=searchresult&amp;t=' . $row[0] . '" rel="tag" class="eventMain">' . cOut($row[1]) . '</a></span>' ;
    $i++;
    echo $spaceline.$mescategories; 

    }//end while
}//end if

答案 6 :(得分:0)

只做

echo substr($mescategories, 0, -1);

而不是echo $mescategories 你放了|在每个实例之后,然后删除最后一个char

否则,如果你需要知道你使用的数组的最后一个键:

end($array);
$lastKey = key($array);

但不要忘记在用它做事之前重置

reset($array);