-2
<?php
$whitelist = array('contact', 'about', 'user');
$_GET['page'] = array('contact');
$test = $_GET['page'];
if(isset($test))
{
  if(in_array($whitelist, $test))
  {
    $got = $test;
    echo $got;
  }
  else 
  {
    $got = 'home';
    echo $got;  
  }
}
?>

现在在这里,我应该得到“联系”的结果,但我得到了“家”。这是为什么 ?

4

3 回答 3

3

in_array 第一个参数应该是 needle(意思是:你在找什么),第二个应该是 haystack(意思是:我们在哪里寻找)。

我认为您颠倒了这些,并且需要是字符串(或其他变量类型),而不是数组。

所以你的脚本应该是这样的:

<?php
$whitelist = array('contact', 'about', 'user');
$test = 'contact';
if(isset($test))
{
  if(in_array($test, $whitelist))
  {
    $got = $test;
    echo $got;
  }
  else 
  {
    $got = 'home';
    echo $got;  
  }
}
?>
于 2012-06-11T16:42:47.150 回答
3

因为白名单是一个字符串数组,而 $_GET['page'] 是一个数组,而不是一个字符串。而且您的参数设置错误。

于 2012-06-11T16:42:52.023 回答
0
<?php
$whitelist = array('contact', 'about', 'user');
$_GET['page'] = 'contact';
$test = $_GET['page'];
if(isset($test))
{
  if(in_array($test, $whitelist))
  {
    $got = $test;
    echo $got;
  }
  else 
  {
    $got = 'home';
    echo $got;  
  }
}
?>
于 2012-06-11T16:46:40.973 回答