Запутался в собственной структуре хранения данных

ilkz

Новичок
Запутался в собственной структуре хранения данных

Делаю систему распределения прав между пользователями. Хранение данных о пользователях решил выполнить в виде массива вида:

---users---+---user1---+---flag1---value1
| |
| +---flagN---valueN
|
+---userN---+---flag1---value
|
+---flagN---valueN

Соответственно, доступ к конкретному флагу конкретного доступа должен быть осуществлен в виде:
$users['userN']['flagN']
Формирование массива реализуется одним из методов класса, приведенного ниже. Вроде бы все правильно. Однако обработку получившегося массива приходится выполнять с помощью трех циклов foreach(). Вот отсюда я и перестаю понимать - почему? Ведь, по идее, достаточно такой конструкции:
PHP:
foreach($users as $user)
  {
    foreach($user as $flag=>$value)
      {/*обработка флагов*/}
  }
Собственно, класс:
PHP:
class TUsers
{

var $users; //структура хранения данных

  function PrintUsers() //печать структуры пользователей
    {
      foreach($this->users as $user)
        {
          foreach($user as $k=>$v)
            {
              echo '<b>User: </b><font color="green">'.$k."</font><br>\n";
              foreach($v as $q=>$w)
                {
                  echo '&nbsp;&nbsp;&nbsp;<font color="red">'.$q.'</font> => <font color="blue">'.$w.'</font><br>';
                }
              echo "<br>\n";
            }
        }
    }
    
  function LoadDB($dbfile) //загрузка Базы Данных пользователей
    {
      if(!file_exists($dbfile)) return false; //БД не найдена => выходим с false
      $f=file($dbfile);
      $this->users=array();
      foreach($f as $fs)
        {
          trim($fs); //обрезаем паразитные пробелы
          list($ACC_TYPE,$AUTH_FLAG,$PERMISSIONS,$LOGIN,$PASSWORD,$EMAIL)=explode(':',$fs);
          
          $user=array($LOGIN => array('ACC_TYPE'=>$ACC_TYPE, //тип аккаунта
                    /* логин */      'AUTH_FLAG'=>$AUTH_FLAG, //флаг авторизации
                                      'PERMISSIONS'=>$PERMISSIONS, //права доступа
                                      'PASSWORD'=>$PASSWORD, //пароль
                                      'EMAIL'=>$EMAIL)); //e-mail
          
          array_push($this->users,$user); //создаем структуру
        }
      //раскомментировать для вывода количества пользователей
      //echo '<b>Loaded users: </b>'.count($this->users)."<br>\n";
      return true; //все ОК => выходим с true
    }
    
}
Пример Базы Данных, которая парсится:
1:1:n(w)|a(x,x,x)|p(x,x)|f(x,x):Паша:test:[email protected]
1:1:n(w)|a(x,x,x)|p(x,x)|f(x,x):Малой:test:[email protected]
1:1:n(w)|a(x,x,x)|p(x,x)|f(x,x):Шурик:test:[email protected]
1:1:n(w)|a(x,x,x)|p(x,x)|f(x,x):Митяй:test:[email protected]
1:1:n(w)|a(x,x,x)|p(x,x)|f(x,x):Гуест:test:[email protected]
 
Сверху