2011-05-26 57 views
1
function blog_gettag(){ 
    $terms = mysql_query('SELECT vid,name FROM term WHERE vid=2'); 
    foreach ($terms as $term){ 
     return $term->name; 
    } 
} 

當我調用功能echo blog_gettag()。只有一個結果。但是當我將函數retrun更改爲echo時。然後blog_gettag()。它打印好。爲什麼?爲什麼函數返回一個結果?

+1

我只是喜歡C#的收益回報xD – Alxandr 2011-05-26 08:18:04

回答

4

這是因爲你只返回一個項目。一旦找到第一個項目,你就會回來。

一個解決辦法是將所有的標記名稱返回一個數組,像這樣:

function blog_gettag(){ 
    $terms = mysql_query('SELECT vid,name FROM term WHERE vid=2'); 
    $items = array(); // Array holding return values 
    foreach ($terms as $term){ 
     $items[] = $term->name; 
    } 

    return $items; 
} 

然後,您可以遍歷所有類似的標籤:

$tags = blog_gettag(); 
foreach($tags as $tag) { 
    echo $tag; 
} 
+0

你們不回報什麼...... – mdm 2011-05-26 08:14:15

+0

@mdm錯過了那一個:) – alexn 2011-05-26 08:14:36

+0

爲什麼downvote? – alexn 2011-05-26 08:21:08

4

return將停止運行該功能。它意味着你的功能已經完成了它必須做的事情。如果你想要它返回所有的標籤,你應該改變一些東西:

function blog_gettag(){ 
    $aTerms = array(); 
    $terms = mysql_query('SELECT vid,name FROM term WHERE vid=2'); 
    foreach ($terms as $term){ 
     $aTerms[] = $term->name ; 
    } 
    return $aTerms; 
} 
+0

明白了,謝謝。 – zhuanzhou 2011-05-26 08:13:55

0

當你return該函數將控制權交給調用者,所以您將在循環的第一次迭代之後退出循環。

1

函數只會執行,直到需要返回某些東西。實質上返回意味着「這是方法的輸出」,然後停止做所有事情。

在您的示例中,您將返回第一行,然後存在該函數。通過生成一個數組的解決方法:

function blog_gettag(){ 
    $terms = mysql_query('SELECT vid,name FROM term WHERE vid=2'); 
    $names = array(); 
     foreach ($terms as $term){ 
      $names[] = $term->name; 
     } 
    return $names; 
} 
1

函數只能返回一個值在php中。如果你想完整的數組,然後首先保存所有結果在一個數組&然後返回該數組

相關問題