2012-11-23 31 views
0

使用下面的代碼,最後一個項目($ 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++; 
       } 
       } 
     } 
    } ?> 
+3

有什麼'如果($詞彙)'測試的意義呢?如果$詞彙表不是非空的數組,那麼你永遠無法達到,所以你基本上在做'if(true == true)'。也許這條線和第一個foreach應該交換。 –

回答

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

您需要使用else-if爲最後的條件。現在你基本上是檢查每個元件都具有2個IFS:

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