为什么函数回显一个结果?

时间:2011-05-26 08:10:06

标签: php mysql

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回声。然后blog_gettag()。它打印好了。为什么呢?

6 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
}

答案 2 :(得分:4)

答案 3 :(得分: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;
}

答案 4 :(得分:1)

一个函数只能在php中返回一个值。如果你想要完整的数组,那么首先将所有结果保存在一个数组&然后返回该数组

答案 5 :(得分:0)

当你return函数产生对调用者的控制时,所以你将在循环的第一次迭代后退出循环。