【问题标题】:Codeigniter merge arrays to a single arrayCodeigniter 将数组合并到单个数组
【发布时间】:2014-03-31 10:20:59
【问题描述】:

我正在尝试在 codeigniter 中解决这个问题,但是因为我是初学者,所以在找到解决方案时遇到了一些麻烦。

我有一个名为tasks 的表和另一个名为progress 的表。因此,tasks 表中插入了许多任务,这些任务的进度被插入progress 表中。我正在使用不同的表来跟踪进度,因为我以后可能需要跟踪每个任务的进度历史记录。

$all_tasks = $this->task_m->get_by(array('user_id'=> $this->session->userdata('id')));

foreach ($all_tasks as $task) {
    $progress = $this->progress_m->get_by(array('task_id'=> $task->id));

};

所以我要做的是将$task$progress 的条目添加到一个数组中,这样我就可以遍历它并一次显示一个任务的组合结果。

tasks 表中有两个条目,$tasks 的值为:

array(2) {
  [0]=>
  object(stdClass)#24 (8) {
    ["id"]=>
    string(1) "6"
    ["user_id"]=>
    string(1) "2"
    ["name"]=>
    string(28) "Sample task to do sometihing"
    ["description"]=>
    string(28) "Sample task to do sometihing"
    ["priority"]=>
    string(4) "high"
    ["status"]=>
    string(7) "pending"
    ["created"]=>
    string(19) "2014-02-27 23:26:09"
    ["modified"]=>
    string(19) "2014-02-27 23:26:09"
  }
  [1]=>
  object(stdClass)#25 (8) {
    ["id"]=>
    string(1) "7"
    ["user_id"]=>
    string(1) "2"
    ["name"]=>
    string(13) "Sample task 2"
    ["description"]=>
    string(11) "Sample desc"
    ["priority"]=>
    string(1) "1"
    ["status"]=>
    string(0) ""
    ["created"]=>
    string(19) "2014-02-28 00:20:17"
    ["modified"]=>
    string(19) "2014-02-28 00:20:17"
  }
}

progress 表中有两个条目,每个 $progress 的值为:

array(1) {
  [0]=>
  object(stdClass)#26 (6) {
    ["id"]=>
    string(1) "1"
    ["task_id"]=>
    string(1) "6"
    ["percentage"]=>
    string(2) "68"
    ["description"]=>
    string(17) "About to complete"
    ["created"]=>
    string(19) "2014-02-18 00:00:00"
    ["modified"]=>
    string(19) "2014-02-12 00:00:00"
  }
}

array(1) {
  [0]=>
  object(stdClass)#27 (6) {
    ["id"]=>
    string(1) "2"
    ["task_id"]=>
    string(1) "7"
    ["percentage"]=>
    string(2) "56"
    ["description"]=>
    string(6) "Sample"
    ["created"]=>
    string(19) "2014-02-05 00:00:00"
    ["modified"]=>
    string(19) "2014-02-14 00:00:00"
  }
}

【问题讨论】:

    标签: php mysql sql json codeigniter


    【解决方案1】:

    你快到了:

    $all_tasks = $this->task_m->get_by(array('user_id'=> $this->session->userdata('id')));
    
    foreach ($all_tasks as $task) {
        $task->progress_list = $this->progress_m->get_by(array('task_id'=> $task->id));
    };
    

    【讨论】:

    • 这有帮助。将进度对象添加到 $task->progress_list ,现在我可以访问进度值 $task->progress_list->percentage 。谢谢
    【解决方案2】:

    为什么不直接使用 ActiveRecord 来连接两个表,运行查询,然后你就拥有一个包含所有信息的结果对象?我假设他们共享一个公共密钥对吗?如果没有,您可能需要重新考虑数据库的布局方式。如果您不想使用 ActiveRecord,您可以在标准 MySQL 中编写查询并使用 query() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2019-08-14
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      相关资源
      最近更新 更多