PHP函数,始终返回相同的输出

PHP函数,始终返回相同的输出,php,function,mybb,Php,Function,Mybb,下面是我经常在我的网站上使用的代码(这是一个MyBB论坛),还有一个特定的网页,我已经写了10多次了 为了使代码更易于阅读,我决定将其转换为函数,每次使用不同的参数调用它。不幸的是,它不起作用,出于某种原因,我一直得到$fail代码,而没有函数,我得到$success 这是我第一次使用PHP函数,但从我在W3学校读到的资料来看,理论上我应该做得很好。练习的时候不多。介意检查我的语法并告诉我是否有错吗 <?php //function code function canviewcheck($

下面是我经常在我的网站上使用的代码(这是一个MyBB论坛),还有一个特定的网页,我已经写了10多次了

为了使代码更易于阅读,我决定将其转换为函数,每次使用不同的参数调用它。不幸的是,它不起作用,出于某种原因,我一直得到$fail代码,而没有函数,我得到$success

这是我第一次使用PHP函数,但从我在W3学校读到的资料来看,理论上我应该做得很好。练习的时候不多。介意检查我的语法并告诉我是否有错吗

<?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声明它们。看起来很奇怪,但让我稍后再试一次,我确信$mybb可以在无需进一步声明的情况下全局使用