如果in_array没有按预期工作?

时间:2012-11-15 19:27:13

标签: php

'权限'是逗号分隔的整数列表,例如:1,10,70,1000 权限字符串被推入$ _SESSION,然后在爆炸后以$ type的形式返回

$permissions = $_SESSION['user']['permissions'];
$type = explode(",", trim($permissions));

if(in_array(1337, $type)){
echo '<li><a href="protectedpage.php">Page Name</a></li>';}

由于某种原因,没有任何回应。 我已经回复了$ _SESSION ['用户'] ['权限']并获得了1337

我已经完成了print_r($ type)并得到了数组([0] =&gt; 1337)

那么为什么in_array不会返回true?

2 个答案:

答案 0 :(得分:2)

我执行了以下代码,它工作正常。

$permissions = '1,10,70,1000,1337';
$type = explode(",", trim($permissions));

if(in_array(1337, $type))
{
    echo 'found';
}

我建议您检查以确保$ permissions在失败的情况下是您所期望的。如果条件不起作用,请尝试回显它,以便您可以检查。您可能还想删除任何空格,以防万一。“

$permissions = $_SESSION['user']['permissions'];
$type = explode(",", str_replace(' ', '', $permissions));

if(in_array(1337, $type))
{
    echo 'found';
}
else
{
    echo $permissions;
}

答案 1 :(得分:0)

尝试将1337放入引号'1337'。我相信这会解决你的问题。