【问题标题】:inserting an object column in data array with existing data使用现有数据在数据数组中插入对象列
【发布时间】:2020-01-23 03:04:01
【问题描述】:

我有一个现有的数据数组,格式如下:

Array ( [0] => Array ( [employee_id] => 14100001 [salary] => 346.35416666667 [late_duration] => 2 [undertime_duration] => 3 [cola_duration] => 0 [date] => 2019-09-09 )
     [1] => Array ( [employee_id] => 14100001 [salary] => 350 [late_duration] => 0 [undertime_duration] => 0 [cola_duration] => 0 [date] => 2019-09-10 )
     [2] => Array ( [employee_id] => 14100002 [salary] => 350 [late_duration] => 0 [undertime_duration] => 0 [cola_duration] => 0 [date] => 2019-09-09 )
     [3] => Array ( [employee_id] => 14100003 [salary] => 358.75 [late_duration] => 0 [undertime_duration] => 0 [cola_duration] => 2 [date] => 2019-09-09 )

现在我想在现有数组中插入一个数据,如下所示:

Array ( [0] => Array ( [employee_id] => 14100001 [salary] => 346.35416666667 [late_duration] => 2 [undertime_duration] => 3 [cola_duration] => 0 [date] => 2019-09-09 [calculate_id] => 1 )
[1] => Array ( [employee_id] => 14100001 [salary] => 350 [late_duration] => 0 [undertime_duration] => 0 [cola_duration] => 0 [date] => 2019-09-10 [calculate_id] => 1 )
[2] => Array ( [employee_id] => 14100002 [salary] => 350 [late_duration] => 0 [undertime_duration] => 0 [cola_duration] => 0 [date] => 2019-09-09 [calculate_id] => 1 )
[3] => Array ( [employee_id] => 14100003 [salary] => 358.75 [late_duration] => 0 [undertime_duration] => 0 [cola_duration] => 2 [date] => 2019-09-09 [calculate_id] => 1 )

这是我的代码,它返回错误:尝试分配非对象的属性'calculate_id'

$calculate = $this->payroll->record_calculate_date($start_date,$end_date);

            foreach ($this->data_array as $key => $value) {
                array_push($this->data_array , $this->data_array->calculate_id = $calculate);
            }
            foreach ($$this->data_array1 as $key => $value) {
                array_push($this->data_array , $this->data_array->calculate_id = $calculate);
            }

【问题讨论】:

  • 所以我猜你的问题是“如何在我的表中添加一个“Insert_ID 列?”建议:考虑类似alter table add column insert_id int auto_increment
  • @paulsm4 我会更具体地编辑 mo 问题
  • @paulsm4 请检查我编辑的问题
  • 您的employee_id 是自动增量还是主要的?是not 那么就用$this->db->insert($data)查询保存数据
  • 问:那么您的问题究竟是什么?问:当你执行上一次 sn-p 中的代码时会发生什么?如果您的表还没有“insert_id”,我想您会收到 MySQL 错误。你可以发布错误吗?问:如果是这样,为什么不直接 alter table 并创建列 auto_increment(Gulshan 建议)?

标签: php arrays codeigniter-3 sql-insert bulkinsert


【解决方案1】:

你可以使用array_map

$calculate = $this->payroll->record_calculate_date($start_date,$end_date);
$f = array_map(function($v) use ($calculate){
    return $v + ["calculate_id" => $calculate];
}, $this->data_array);
$this->data_array = $f;

演示:https://3v4l.org/0pJNW

【讨论】:

  • 非常好的答案。这就是我需要的
  • @Jc John - 感谢您澄清您的问题。注意:1) 问一个具体的问题总是有帮助的。陈述你的问题:不要暗示它。 2)示例代码很棒。 3)复制/粘贴与代码相关的实际错误消息会更好。为您的下一个问题吸取的教训:) 如果他有帮助,请投票支持 Rakesh Jakhar;如果解决了问题,请“接受”他的回答。
  • @paulsm4 注明。
猜你喜欢
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2021-05-14
  • 2017-07-17
相关资源
最近更新 更多