我有这么一块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');