Php foreach循环仅显示codeigniter中的最后一条记录,并获取5分钟后记录的活动记录

Php foreach循环仅显示codeigniter中的最后一条记录,并获取5分钟后记录的活动记录,php,codeigniter,Php,Codeigniter,大家好,我正在尝试在codeigniter中获取活动会话用户。因此,我将所有会话存储在数据库和名为ci_sessions的表中,我从ci_sessions表中获取用户数据,并尝试通过foreach从数据中获取用户名,但我只获取最后一个活动用户 这是我的密码: <?php $query = $this->db->query('SELECT * FROM ci_sessions'); foreach ($query->result() as $row) { $ses

大家好,我正在尝试在codeigniter中获取活动会话用户。因此,我将所有会话存储在数据库和名为ci_sessions的表中,我从ci_sessions表中获取用户数据,并尝试通过foreach从数据中获取用户名,但我只获取最后一个活动用户

这是我的密码:

<?php
$query = $this->db->query('SELECT * FROM ci_sessions');

foreach ($query->result() as $row) {
    $session_data = $row->data;

    $return_data = array();  // array where you put your "BLOB" resolved data

    $offset = 0;
    while ($offset < strlen($session_data)) 
    {
        if (!strstr(substr($session_data, $offset), "|")) 
        {
            throw new Exception("invalid data, remaining: " . substr($session_data, $offset));
        }
        $pos = strpos($session_data, "|", $offset);
        $num = $pos - $offset;
        $varname = substr($session_data, $offset, $num);
        $offset += $num + 1;
        $data = unserialize(substr($session_data, $offset));
        $return_data[$varname] = $data;  
        $offset += strlen(serialize($data));
    }    
}
echo $return_data['user_name'];

?>

谁能帮我一下我哪里做错了


提前谢谢。

你犯了一个小错误

<?php
$query = $this->db->query('SELECT * FROM ci_sessions');
$return_data = array();  // array where you put your "BLOB" resolved data
foreach ($query->result() as $row) {
   $session_data = $row->data;

   $offset = 0;
   while ($offset < strlen($session_data)) 
    {
       if (!strstr(substr($session_data, $offset), "|")) 
        {
          throw new Exception("invalid data, remaining: " . substr($session_data, $offset));
        }
          $pos = strpos($session_data, "|", $offset);
          $num = $pos - $offset;
          $varname = substr($session_data, $offset, $num);
          $offset += $num + 1;
          $data = unserialize(substr($session_data, $offset));
          $return_data[$varname][] = $data;  
          $offset += strlen(serialize($data));
      }

      }
     var_dump( $return_data['user_name'][0] );

     foreach($return_data['user_name'] as $onesession) {
          echo $onesession;
          echo '<br>';
     }

?>


$return_data=array();我把它从foreach循环中移出了

您只调用了一次echo..这样做:$return_data[][$varname]=$data;我正在从另一个使用不同用户名登录的浏览器中获取当前用户predeep“7”的id。我无法查看该idusername@Philipp这是什么意思philipp@suresh打印用户名的
echo
-语句不在foreach循环中,所以它总是只打印最后一条记录,
$return\u data
在每次循环迭代中都会被覆盖,直到我只能看到一条记录..但是我通过两个不同的浏览器登录,使用不同的用户名echo$varname;在while内部循环并检查输出,可能每次都是相同的..结果:u ci_last_regentis_loggeduser_namefirst_namellast_nameuserlevelorganization_iduser_idpage_nameorg_idtemp_user_id_ci_last_regentis_loggeduser_namefirst_namellast_namelast_nameus我已经更新了代码$返回_data[$varname][]=$data;像这样放置,并检查这行echo$return_data['user_name']中的showing error;数组到字符串的转换