这段代码出了什么问题?返回最后一项的重复结果

时间:2012-11-23 15:43:28

标签: php drupal drupal-6

使用下面的代码,最后一项($ term-> name)返回最后一项的重复条目。

输出:

示例:计算机,时装,出版物,医学,医学

示例:IT,音乐,技术,技术

帮助!

<?php $vocabularies = taxonomy_get_vocabularies();
    foreach($vocabularies as $vocabulary) {
       if ($vocabularies) {
          $terms = taxonomy_node_get_terms_by_vocabulary($node, $vocabulary->vid);
             if ($terms) {
       $i = 1;
       $len = count($terms);
                foreach ($terms as $term) {                     
             if ($i == 1) {
                   print '<span class="separator">' . t($term->name) . '</span>' . ' , '; }
                 else {
                    print '<span class="separator">' . t($term->name) . '</span>' . ' , '; }
             if ($i == $len) {
                   print '<span class="separator">' . t($term->name) . '</span>'; }
        $i++;
                }
              }
       }
    } ?>

2 个答案:

答案 0 :(得分:3)

if ($i == 1) {
    // the first element
} else {
    // other elements, including the last one
}

if ($i == $len) {
    // the last element again
}

您可能希望将其更改为:

if ($i == 1) {
    // the first element
} else if ($i < $len) {
    // other elements, excluding the last one
}

if ($i == $len) {
    // the last element
}

或者,如果第一个元素没有特殊意义:

if ($i < $len) {
    // all elements excluding the last one
} else {
    // the last element
}

答案 1 :(得分:1)

您需要使用else-if作为最后一个条件。现在你基本上用2个ifs检查每个元素:

If i is one, do this, else that.
AND
If i is the last one, also do this