PHP函数,始终返回相同的输出
下面是我经常在我的网站上使用的代码(这是一个MyBB论坛),还有一个特定的网页,我已经写了10多次了 为了使代码更易于阅读,我决定将其转换为函数,每次使用不同的参数调用它。不幸的是,它不起作用,出于某种原因,我一直得到$fail代码,而没有函数,我得到$success 这是我第一次使用PHP函数,但从我在W3学校读到的资料来看,理论上我应该做得很好。练习的时候不多。介意检查我的语法并告诉我是否有错吗PHP函数,始终返回相同的输出,php,function,mybb,Php,Function,Mybb,下面是我经常在我的网站上使用的代码(这是一个MyBB论坛),还有一个特定的网页,我已经写了10多次了 为了使代码更易于阅读,我决定将其转换为函数,每次使用不同的参数调用它。不幸的是,它不起作用,出于某种原因,我一直得到$fail代码,而没有函数,我得到$success 这是我第一次使用PHP函数,但从我在W3学校读到的资料来看,理论上我应该做得很好。练习的时候不多。介意检查我的语法并告诉我是否有错吗 <?php //function code function canviewcheck($
<?php
//function code
function canviewcheck($allowedgroups)
{
$groups = $mybb->user['usergroup'];
if ($mybb->user['additionalgroups']) {
$groups .= "," . $mybb->user['additionalgroups'];
}
$explodedgroups = explode(",", $groups);
$canview = 0;
foreach ($explodedgroups as $group) {
if (in_array($group, $allowedgroups)) {
$canview = 1;
echo $success;
break;
}
}
if (!$canview) {
echo $fail;
}
}
//Parameters that I want to use
$allowedgroups = [4, 19];
$pid = 'URL';
$success = "<a href=URL><span style='color:green; font-size:20px;'>SUCCESS</span></a>";
$fail = "<a href=" . $pid . "><span style='color:#DE1603; font-size:20px;'>FAIL</span>;</a>";
//Call to function
canviewcheck($allowedgroups, $pid, $success, $fail);
您需要向函数添加所有必要的参数,并且$mybb
还需要作为参数传递
<?php
//function code
function canviewcheck($allowedgroups, $success, $fail, $mybb)
{
$groups = $mybb->user['usergroup'];
if ($mybb->user['additionalgroups']) {
$groups .= "," . $mybb->user['additionalgroups'];
}
$explodedgroups = explode(",", $groups);
$canview = 0;
foreach ($explodedgroups as $group) {
if (in_array($group, $allowedgroups)) {
$canview = 1;
echo $success;
break;
}
}
if (!$canview) {
echo $fail;
}
}
//Parameters that I want to use
$allowedgroups = [4, 19];
$pid = 'URL';
$success = "<a href=URL><span style='color:green; font-size:20px;'>SUCCESS</span></a>";
$fail = "<a href=" . $pid . "><span style='color:#DE1603; font-size:20px;'>FAIL</span>;</a>";
//Call to function
canviewcheck($allowedgroups, $success, $fail, $mybb);
$pid
未在函数中使用,因此不需要将其作为参数传递
<?php
//function code
function canviewcheck($allowedgroups, $success, $fail, $mybb)
{
$groups = $mybb->user['usergroup'];
if ($mybb->user['additionalgroups']) {
$groups .= "," . $mybb->user['additionalgroups'];
}
$explodedgroups = explode(",", $groups);
$canview = 0;
foreach ($explodedgroups as $group) {
if (in_array($group, $allowedgroups)) {
$canview = 1;
echo $success;
break;
}
}
if (!$canview) {
echo $fail;
}
}
//Parameters that I want to use
$allowedgroups = [4, 19];
$pid = 'URL';
$success = "<a href=URL><span style='color:green; font-size:20px;'>SUCCESS</span></a>";
$fail = "<a href=" . $pid . "><span style='color:#DE1603; font-size:20px;'>FAIL</span>;</a>";
//Call to function
canviewcheck($allowedgroups, $success, $fail, $mybb);
函数中未设置变量$mybb
。您应该从使用该变量的所有内容中得到一个错误。为什么您使用4个参数($alloweGroups,$pid,$success,$fail
)调用该函数,而该函数被定义为只接受1个参数($alloweGroups
)?@Barmar$mybb是mybb论坛上的全局变量,我可以在黑板的所有页面上使用它,而无需issues@jibsteroos我已经编辑了我的问题文本,当我发布它时,我意外地粘贴了上一次测试中使用的代码。全局变量在函数中不可用,除非您使用global$mydb声明它们函数中的code>。看起来很奇怪,但让我稍后再试一次,我确信$mybb可以在无需进一步声明的情况下全局使用