我有一段看起来像这样的代码:
if(array_key_exists('uid',$_SESSION)){
$userdata->readUser($_SESSION['uid']);
$ACL = new ACL($_SESSION['uid']);
$userPerms = $ACL->setACL();
if(!in_array_r("adminUI",$userPerms['perms'],true)){
echo "Couldnt fine adminUI in:";
var_dump($userPerms['perms']);
}
}
in_array_r 函数是:
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
我从中得到:in_array() 和多维数组
但是,此输出显示:
Couldnt fine adminUI in:
array(2) {
[0]=>
array(1) {
["perm_desc"]=>
string(7) "adminUI"
}
[1]=>
array(1) {
["perm_desc"]=>
string(9) "apiAccess"
}
}
如果我更改函数以在没有 STRICT 的情况下检查数组,它将找到针,但在严格检查时失败...
我正在把头撞到桌子上,试图弄清楚这一点。
编辑
Jan Schejbal 非常棒,他指出这段代码运行良好。我不够连贯,无法实现我的工作目录。再次感谢 Jan Schejbal。