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;
}
当您return
时,函数将控制权交给调用者,因此您将在循环的第一次迭代后退出循环。