当我试图获取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>
任何人都可以帮助我为什么会出现这个错误。
提前致谢。
答案 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>