PHP CodeIgniter使用foreach从数据库更改对象数组数据值

时间:2013-11-21 14:53:54

标签: php arrays codeigniter object foreach

如何更改对象数组的值,这是我从$this->db->query('My Query');得到的(结果是对象)。我尝试使用foreach ($data->result() as $row) - 它工作正常,我可以到达每个变量,但我不能通过使用“&”来修改它(foreach ($data->result() as &$row))因为错误(php不显示)。有什么想法吗?

3 个答案:

答案 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(); ?>