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正在返回空。
感谢您的帮助!
答
的东西被返回的唯一时间是在下面的行失败:
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
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