//读取用户所属用户组
$groups = $this->getGroups($uid);
$ids = array();//保存用户所属用户组设置的所有权限规则id
foreach ($groups as $g) {
  $ids = array_merge($ids, explode(',', trim($g['rules'], ',')));
}

上面的代码在运行过程中会报:Illegal string offset ‘rules’的,经过检查发现错误原因如下:

$groups是一个二维数组,在循环过程中产生了空数组$g或者不包含rules键的数组$g。

解决办法就是在循环过程中判断是否存在$g[‘rules’],具体代码如下:


$ids = array_merge($ids, explode(',', isset($g['rules')?trim($g['rules']:'', ',')));