PHP用户定义的功能无法正常工作

时间:2011-10-27 21:43:14

标签: php function

继承我的职责:

function get_r($groupid) {
 if (!empty($groupid)) {     
  $groupid = explode(",", $groupid);
  $rto = array();
  $x=0;
  while (count($groupid,$ustaffid) > $x) {
   $q = mysql_query("SELECT * FROM groups WHERE id='$groupid[$x]'");
   while ($get = mysql_fetch_assoc($q)){
    $rto[] = $get['groupname'];
   }
   $x++;
  }
  $q = mysql_query("SELECT * FROM groups WHERE ustaffid='$ustaffid'");
  $numofgroups = mysql_num_rows($q);
  if ($numofgroups == count($groupid) && count($groupid) > 1) {
   $rto = "All of my groups"; 
  } else {   
   $rto = implode(", ",$rto);
   return $rto;
  }
 }  
}

当我调用函数时我正在使用它:

get_r($groupid);

我要做的是从我的函数中获取变量$ rto,我已经为$ groupid变量提供了函数。 $ rto回来了。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

你的功能中有2个退出点:

  if ($numofgroups == count($groupid) && count($groupid) > 1) {
   $rto = "All of my groups"; 
  } else {   
   $rto = implode(", ",$rto);
   return $rto;   <---- here
  }
} <--- here (end of the function)

只有当if子句的计算结果为FALSE时才会返回$ rto。否则执行会从函数的底部掉出来而不会返回任何内容。

在此处添加其他回报:

  if ($numofgroups == count($groupid) && count($groupid) > 1) {
   $rto = "All of my groups"; 
   return $rot; <---

或者只是将另一个回调调用移到函数的底部,所以无论if()结果如何,它都会返回$ rto。

  if (...) {
       ...
  } else { 
      ...
  }
  return $rto;

答案 1 :(得分:0)

$foo=get_r($groupid);
echo $foo;

和: Variable scope

答案 2 :(得分:0)

返回内容的唯一时间是以下行失败时:

if ($numofgroups == count($groupid) && count($groupid) > 1) {

因此,如果你匹配所有的群组,基本上你不会得到任何结果。您应该将return替换为函数的最后一行以避免这种情况。

答案 3 :(得分:0)

一旦函数完成,返回的变量就会超出范围。 这样做

$rto = get_r($groupid);

$ rto被分配了返回值。

此外,如果if块为true,则不会返回值。

if ($numofgroups == count($groupid) && count($groupid) > 1) {
   $rto = "All of my groups"; 
     return $rto; //********** This <<
  } else {   
   $rto = implode(", ",$rto);
   return $rto;}