数组中的php错误

数组中的php错误,php,arrays,Php,Arrays,如果在函数声明中移动$bannedIPs,会发生什么?PHP可能认为它超出了范围。如果在函数声明中移动$bannedIPs,会发生什么?PHP可能认为它超出了范围。您需要全局$bannedIPs 这对我很有用: function ipban() { $bannedIPs = array('127.0.0.1','72.189.218.85'); if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { echo '

如果在函数声明中移动$bannedIPs,会发生什么?PHP可能认为它超出了范围。

如果在函数声明中移动$bannedIPs,会发生什么?PHP可能认为它超出了范围。

您需要全局$bannedIPs

这对我很有用:

function ipban() {
    $bannedIPs = array('127.0.0.1','72.189.218.85');
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }   
}
ipban();

因此,您可能想看看这是否有效,在IP地址中替换,然后最后用服务器变量替换

这对我很有用:

function ipban() {
    $bannedIPs = array('127.0.0.1','72.189.218.85');
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }   
}
ipban();

因此,您可能想看看这是否有效,替换IP地址,然后最后用服务器变量替换它。

您的变量
$bannedIPs
超出了函数的范围。了解变量范围:

回复:更新:


如果在函数中移动变量,代码段将执行良好。您的代码中肯定还有其他内容。

您的变量
$bannedIPs
超出了函数的范围。了解变量范围:

回复:更新:


如果在函数中移动变量,代码段将执行良好。您的代码中肯定还有其他内容。

您的变量范围设置遇到了一个小问题

PHP中函数外部的任何变量在内部都不可访问。有多种方法可以克服这一问题

您可以在函数中声明
$bannedIPs
,如下所示:

$var = 'xyz';
function abc() {
    // $var does not exist here

    $foo = 'abc';
}

// $var exists here

// $foo does not exist here
使用
global
关键字告诉您的函数访问函数外部的
$bannedIPs

function ipban() {
    $bannedIPs = array('127.0.0.1','72.189.218.85');
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }   
}
或者,使用
$GLOBALS
超级全局:

$bannedIPs = array('127.0.0.1','72.189.218.85');

function ipban() {
    global $bannedIPs;

    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }
}
我建议您阅读有关可变范围的手册页面:


如果它仍然不起作用,那么代码中还有另一个问题。在这种情况下,您可能要考虑使用<代码> VARYDUMP()/<代码>检查datatype是什么代码> $BANNDIPS < /代码>,然后向下表决我们所有。< /强>

$bannedIPs = array('127.0.0.1','72.189.218.85');

function ipban() {
    if (in_array($_SERVER['REMOTE_ADDR'], $GLOBALS['bannedIPs'])) { 
        echo 'test';
    }
}

您在变量作用域方面遇到了一个小问题

PHP中函数外部的任何变量在内部都不可访问。有多种方法可以克服这一问题

您可以在函数中声明
$bannedIPs
,如下所示:

$var = 'xyz';
function abc() {
    // $var does not exist here

    $foo = 'abc';
}

// $var exists here

// $foo does not exist here
使用
global
关键字告诉您的函数访问函数外部的
$bannedIPs

function ipban() {
    $bannedIPs = array('127.0.0.1','72.189.218.85');
    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }   
}
或者,使用
$GLOBALS
超级全局:

$bannedIPs = array('127.0.0.1','72.189.218.85');

function ipban() {
    global $bannedIPs;

    if (in_array($_SERVER['REMOTE_ADDR'], $bannedIPs)) { 
        echo 'test';
    }
}
我建议您阅读有关可变范围的手册页面:


如果它仍然不起作用,那么代码中还有另一个问题。在这种情况下,您可能要考虑使用<代码> VARYDUMP()/<代码>检查datatype是什么代码> $BANNDIPS < /代码>,然后向下表决我们所有。< /强>

$bannedIPs = array('127.0.0.1','72.189.218.85');

function ipban() {
    if (in_array($_SERVER['REMOTE_ADDR'], $GLOBALS['bannedIPs'])) { 
        echo 'test';
    }
}


我尝试在函数中移动变量,但它仍然有相同的错误我尝试在函数中移动变量,但它仍然有相同的错误,这意味着$\u服务器有问题,出于某种原因,一些白痴决定记下我的答案。。。真的吗?@Chacha102:对不起,是的,因为“尝试切换参数”和“修剪
$\u SERVER
”完全没有根据,毫无意义。整个问题都是毫无根据的废话。他甚至评论说,出于某种原因,它现在起作用了。最初的问题是一个完全有效的范围问题,正如你回答的开头所说。你剩下的答案是不好的建议。请随意编辑。这意味着这是$\u服务器的问题,出于某种原因,一些白痴决定记下我的答案。。。真的吗?@Chacha102:对不起,是的,因为“尝试切换参数”和“修剪
$\u SERVER
”完全没有根据,毫无意义。整个问题都是毫无根据的废话。他甚至评论说,出于某种原因,它现在起作用了。最初的问题是一个完全有效的范围问题,正如你回答的开头所说。你剩下的答案是不好的建议。请随意编辑它。+1,特别是对于否决票部分。这将变成一个幼稚园线程。我发现的另一种方法是将变量传递到函数on call ipban($bannedIPs)@jasondavis:是的,但是你会让你的函数调用变得更加冗长。这是代码味道+1,特别是对于下一票部分。这将变成一个幼稚园线程。我发现的另一种方法是将变量传递到函数on call ipban($bannedIPs)@jasondavis:是的,但是你会让你的函数调用变得更加冗长。这是代码气味。只是出于好奇,您是否将错误报告设置为E_ALL?只是出于好奇,您是否将错误报告设置为E_ALL?