PHP用户定义函数无法正常工作

PHP用户定义函数无法正常工作,php,function,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]'"); whil

这是我的职责:

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;
  }
 }  
}
  if ($numofgroups == count($groupid) && count($groupid) > 1) {
   $rto = "All of my groups"; 
  } else {   
   $rto = implode(", ",$rto);
   return $rto;   <---- here
  }
} <--- here (end of the function)
当我调用函数时,我使用的是:

get_r($groupid);
我要做的是从函数中获取变量$rto,我为函数提供了$groupid变量$rto返回为空

谢谢你的帮助

$foo=get_r($groupid);
echo $foo;
以及:

返回内容的唯一时间是以下行出现故障时:

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

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

函数完成后,返回的变量将超出范围。 像这样做

$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;}
if($numfogroups==count($groupid)&&count($groupid)>1){
$rto=“我的所有组”;

return$rto;//*******这您的函数中有两个退出点:

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

1) 请尝试
print\r($groupid)
以确保设置正确。2)我怀疑您是否真的打算将两个参数传递给
count()
。3)
$ustaffid
没有被设置在任何位置。4)您只从最后的
if/then/else
的一个分支返回。我已经设置了
$rto=array();
在函数的最开始,并
返回$rto;
在函数的最结尾。5)如果只使用
foreach($groupid作为$id)
,则无需使用
$x
(这突出说明了
$groupid
的名称有多么糟糕,因为它既是组id列表又是组id数组,但从来不是单个组id。)是的,我花了点时间才弄明白。谢谢。