所以这部分代码:
print_r($_SESSION['T']);
$T = array_values($data2);
print_r($_SESSION['T']);
输出:
Array ( [0] => NZL ) Array ( [0] => ENG [1] => NZL )
该行是第一次宣布$ T.据我所知,$ _SESSION ['T']没有理由获得参赛作品,这肯定会给我带来麻烦。
可能需要注意的是,在调用array_values之后,var $ T看起来像:
Array ( [0] => ENG [1] => NZL )
这是$ _SESSION ['T']的第二次打印显示的内容。
如果你能想出任何可能发生的原因,请告诉我,谢谢
答案 0 :(得分:4)
看起来您可能已启用Register Globals。
if (ini_get('register_globals')) {
die("Register Globals is ON - This is BAD");
}
else {
die("Register Globals is OFF - This is GOOD");
}
这个想法是 - 使用寄存器全局变量 - 您可以使用变量$T
作为$_GLOBALS['T']
...或$_GET['T']
或$_POST['T']
或(当然)的简写)$_SESSION['T']
。
如果这听起来像是一个坏主意,那是因为它已经过了,现在已经非常劝阻它被弃用,并且通常默认关闭。
答案 1 :(得分:1)
这是一个已知的错误/副作用。有关详细信息,请参阅this question。通过将register_globals
设置为关闭,它应该是可排序的。
答案 2 :(得分:1)
这可能是因为您将register_globals
设置为on
(这非常糟糕)。 (见http://www.php.net/manual/en/security.globals.php)
您应该禁用寄存器全局变量,以便SESSION / POST / GET / REQUEST / COOKIE变量不会干扰。