foreach循环中的非法字符串偏移量

时间:2018-06-06 09:14:52

标签: php codeigniter

当我试图获取first_name时,我试图从foreach获取值我得到的错误就像`

  

非法字符串偏移'first_name'

我不明白为什么会出现这个错误。

这是我的代码:

<tbody>
<?php
 $query = $this->db->query("SELECT * FROM ci_sessions WHERE timestamp >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 2 MINUTE))");
 $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] );

$return_data['user_name'] = array_unique($return_data['user_name']);

print_r($return_data['first_name']);    

foreach ($return_data['user_name'] as $onesession) {?>

<tr>

 <td><?php echo $onesession; ?></td>
 <td><?php echo $onesession['first_name']; ?></td>

  </tr>
 <?php } ?>
 </tbody>

任何人都可以帮助我为什么会出现这个错误。

提前致谢。

1 个答案:

答案 0 :(得分:1)

希望这会对您有所帮助:

由于$result_data是单个数组,因此您无法循环它,因此将$ return_ $ data存储到另一个数组中以获得所需的结果

$data[] = $return_data;

您的foreach应该是这样的;

$data[] = $return_data;

/* use below code if [] not supported*/

$data = array();
array_push($data,$return_data);

foreach ($data as $onesession) {?>

 <tr>

 <td><?php echo $onesession['user_name'][0]; ?></td>
 <td><?php echo $onesession['first_name'][0]; ?></td>
  </tr>
 <?php } ?>
 </tbody>