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


PHP CodeIgniter change object array data value from database with foreach

如何更改从$this->db->query('My Query');得到的对象数组的值(结果是Object)。我试着使用foreach ($data->result() as $row)——它工作得很好,我可以访问每个变量,但由于错误(php没有显示),我无法使用"&"(foreach ($data->result() as &$row))修改它。有什么想法吗?

使用一个额外的变量。

$result = $data->result();
foreach ($result as &$row) {
 // enter code here
}

如果我理解你的意思,你假设修改你正在编辑的对象也会在数据库中取值。

如果是这种情况,您应该运行一个查询来更新数据库中的数据

$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/librarys/table.html

$this->load->library('table');
echo $this->table->generate($result);

由于某些原因,提供的方法不起作用。我找到了解决方案,如何解决我的问题:

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