警告 PHP 中的非法字符串偏移量


Warning Illegal string offset in PHP

我有这么一块PHP代码,它给了我错误:

警告:第 29 行 C:''xampp''htdocs''MP''multi''functions.php 中的非法字符串偏移量"mod_modulecode"

这是与警告相关的代码:

function set_rights($menus, $menuRights) {
    $data = array();
    for ($i = 0, $c = count($menus); $i < $c; $i++) {
        $row = array();
        for ($j = 0, $c2 = count($menuRights); $j < $c2; $j++) {
            if ($menuRights[$j]["rr_modulecode"] == $menus[$i]["mod_modulecode"]) {
                if (authorize($menuRights[$j]["rr_create"]) || authorize($menuRights[$j]["rr_edit"]) ||
                        authorize($menuRights[$j]["rr_delete"]) || authorize($menuRights[$j]["rr_view"])
                ) {...................'

任何帮助将不胜感激。

PHP 所说的是,在某个迭代中

if ($menuRights[$j]["rr_modulecode"] == $menus[$i]["mod_modulecode"]) {

$menus[$i]是一个字符串,而不是一个数组,您尝试像包含键mod_modulecode的数组一样访问它。

为了帮助追踪此错误,我建议:

if(is_string($menus[$i]) {
    var_dump('string bug','i',$i,'j',$j,'$menus[$i]',$menus[$i]);
}
if ($menuRights[$j]["rr_modulecode"] == $menus[$i]["mod_modulecode"]) {

或者更好的是,如果您安装了xdebug,这将在抛出未捕获的异常时显示局部变量:throw new Exception('string bug');