数组中的php错误
如果在函数声明中移动$bannedIPs,会发生什么?PHP可能认为它超出了范围。如果在函数声明中移动$bannedIPs,会发生什么?PHP可能认为它超出了范围。您需要全局$bannedIPs 这对我很有用:数组中的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 '
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?