在多暗阵列中找不到STRICT针

时间:2013-01-28 03:22:32

标签: php

我有一段代码如下:

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() and multidimensional array

但是输出显示:

Couldnt fine adminUI in:
array(2) {
  [0]=>
  array(1) {
    ["perm_desc"]=>
    string(7) "adminUI"
  }
  [1]=>
  array(1) {
    ["perm_desc"]=>
    string(9) "apiAccess"
  }
}

如果我更改函数以检查没有STRICT的数组,它会找到针,但是严格检查FAILS ...

我正在打我的脑袋试着想出这个。

修改

Jan Schejbal非常棒,可以指出这段代码非常合适。我没有足够的连贯性来实现我的工作目录。再次感谢Jan Schejbal。

1 个答案:

答案 0 :(得分:1)

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

如果您有完全WTF错误:

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

  2. 使用显示

  3. 的编辑器检查文件中是否有不可打印的字符

    没有。 1是无法解释的错误的最常见原因之一。