为什么函数回显一个结果


why the function echo one result?

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()。打印正常。为什么?

这是因为您只返回一个项目。一旦它找到第一个项目,您就会返回。

一个解决方案是返回一个包含所有标签名称的数组,如下所示:

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;
}

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;
}

返回将结束循环,

http://php.net/manual/en/function.return.php

函数只有在需要返回某些内容之前才会执行。Return本质上意味着"这是方法的输出",然后它停止执行所有操作。

在您的示例中,您返回第一行,然后函数存在。通过生成阵列解决问题:

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;
}
函数在php中只能返回一个值。如果您想要完整的数组,那么首先将所有结果保存在一个数组中&然后返回该数组

当您return时,函数将控制权交给调用者,因此您将在循环的第一次迭代后退出循环。