2

我有一段看起来像这样的代码:

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。

4

1 回答 1

1

我最初将此作为评论发布,但因为它确实是问题的答案......

如果你有一个完全 WTF 错误:

  1. 更改错误消息并再次运行程序。如果它显示原始错误消息,则您运行的文件与您正在编辑的文件不同(例如,未上传、错误的目录)或在某处有另一个生成错误消息的代码副本。

  2. 使用显示文件的编辑器检查文件中的不可打印字符

第 1 号是导致无法解释的错误的最常见原因之一。

于 2013-01-28T03:53:26.210 回答