0

「パーミッション」はカンマ区切りの整数のリストです。例: 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['user']['permissions'] をエコーし​​て 1337 を取得しました

print_r($type) を実行し、配列を取得しました ( [0] => 1337 )

では、なぜ in_array が true を返さないのでしょうか?

4

2 に答える 2

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;
}
于 2012-11-15T19:33:36.623 に答える
0

1337引用符で囲んでみてください'1337'。それがあなたの問題を解決すると信じています。

于 2012-11-15T19:31:08.687 に答える