PHP用户自定义功能正常

问题描述:

我的继承人功能:PHP用户自定义功能正常

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正在返回空。

感谢您的帮助!

+0

1)试试'print_r($ groupid)'以确保它被正确设置。 2)我怀疑你的意思是将2个参数传递给'count()'。 3)'$ ustaffid'没有被设置在任何地方。 4)你只是从你最后的'if/then/else'的一个分支中返回。我在函数的VERY开头设置了'$ rto = array();'并且在VERY结束时设置了'return $ rto;'。 5)如果你只是使用'foreach($ groupid as $ id)',不需要'$ x''。 (这突出显示'$ groupid'是如何命名的,因为它既可以作为组ID的列表,也可以作为组ID的数组,但不能作为一个组的ID。) – grossvogel

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

和: Variable scope

+0

谢谢。说得通。 – DanielOlivasJr

的东西被返回的唯一时间是在下面的行失败:

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

你已经在你的功能得到了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) 

只有当,如果从句的计算结果为FALSE并$ RTO得到恢复。否则,执行不在函数的底部,不返回任何内容。

这里添加另一个回报:

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

或只是移动的其它返回调用该函数的底部,所以$ RTO不管它如何返回的,如果()证明。

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

是的,花了我一些时间来解决这个问题。谢谢。 – DanielOlivasJr