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。)是的,我花了点时间才弄明白。谢谢。