如何更改对象数组的值,这是我从$this->db->query('My Query');
得到的(结果是对象)。我尝试使用foreach ($data->result() as $row)
- 它工作正常,我可以到达每个变量,但我不能通过使用“&”来修改它(foreach ($data->result() as &$row)
)因为错误(php不显示)。有什么想法吗?
答案 0 :(得分:0)
使用额外的变量。
$result = $data->result();
foreach ($result as &$row) {
// enter code here
}
答案 1 :(得分:0)
如果我理解你的意思,你假设修改你正在编辑的对象也是数据库中的值。
如果是这种情况,您应该运行查询来更新数据库中的数据
$result = $data->result();
foreach ($result as &$row) {
$row->prop = 'new value';
$this->db->set($row)->where('id',$row->id)->update('table_name');
}
====================编辑====================
如果您想忽略0000-00-00
之类的日期,则应将其设置为空字符串,然后打印出表格。
$result = $data->result();
foreach ($result as &$row)
{
if( $row->date == '0000-00-00')
$row->date = '';
}
打印出一个表,你可以使用Codeigniter的HTML表类传递$ result对象。
http://ellislab.com/codeigniter%20/user-guide/libraries/table.html
$this->load->library('table');
echo $this->table->generate($result);
答案 2 :(得分:0)
由于某些原因,提供的方法不起作用。我找到了解决方案,如何解决我的问题:
<?php $result = $data->result_array();
foreach($result as &$row)
{
if($row['date'] == '0000-00-00')
{
$row['date'] = ' ';
}
$this->table->add_row($row['date'], $row['(other parameter)']...);
}
$this->table->set_template($template);
echo $this->table->generate(); ?>