使用codeigniter将row_array添加到result_array foreach循环中?

时间:2013-09-01 00:46:53

标签: php mysql arrays codeigniter foreach

我目前在网络应用程序上有一个功能,我正在建立一个求职者可以查看他们申请的工作,非常简单。

当他们“申请”时,这个应用程序存储在数据库表'applications'中,并带有'job_id'列,该列存储'jobs'数据库表中作业的'id'。

目前,我能够提取所述求职者所提出的每份申请。

虽然,我无法遍历每个应用程序并找到与该应用程序对应的作业,然后将row_array()添加到更大的数组中,然后我将使用foreach循环输出作业。

基本上我问的是如何将数组添加到数组然后输出完整的数组?

appliedfor.php (CONTROLLER)

$applications_query = $this->db->get_where(
    'applications', array('jobseeker_profile_id' => $user['id'])
);
$applications = $applications_query->result_array();

$data[] = array();

foreach ($applications as $application) {
    $job_id = $application['job_id'];
    $data['job'] = $this->db->get_where('jobs', array('id' => $job_id))->row_array();
    $data['jobs'] .= $data['job'];
}

$data['jobs'];

$this->load->view('header');
$this->load->view('appliedfor', $data); 

appliedfor.php (VIEW)

foreach ($jobs as $job) {
    $single_job_id = $job['id'];

    echo "<br>";
    echo form_open('job/view' . '" id="eachJob');

    echo "<div id=\"leftContain\" class=\"floatLeft\">";
    echo "<h4 class=\"green\">" . $job['role'] . "</h4>";
    echo "<div class=\"italic\"><div class=\"blue floatLeft\">" . $job['company']
        . " &nbsp; </div><div class=\"floatLeft\">in</div><div class=\"blue floatLeft\"> &nbsp; "
        . $job['location'] . "</div></div><br><br>";
    echo "</div>";

    echo "<div id=\"rightContain\" class=\"floatLeft\">";
    echo "<input type=\"hidden\" name=\"job_id\" value=\"" . $single_job_id . "\">";
    echo form_submit('submit' . '" class="jobButton floatRight"', 'View Job');
    echo "</div>";

    echo form_close();
}

我目前收到2个错误:未定义索引:作业和错误在此行中显然是$data['jobs']在foreach中的控制器中。

另一个错误是视图文件中的foreach,但基本上是由第一个错误触发的。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你是对的:

$data['jobs'] .= $data['job'];

连接字符串,而不是数组,并且永远不会工作。

相反,尝试类似:

$data['jobs'][] = $data['job'];

建立一个作业数组,然后使用foreach()或任何最合适的

输出

答案 1 :(得分:0)

更改您的控制器代码:

$applications_query = $this->db->get_where(
    'applications', array('jobseeker_profile_id' => $user['id'])
);
$applications = $applications_query->result_array();

$data = array(); //declare and init $data, an empty array

foreach ($applications as $job_id=>$application) {
   // list jobs for job_id, you can using $job_id as array-key
    $data['job'][$job_id] = $this->db->get_where('jobs', array('id' => $job_id))->row_array(); 
}


$this->load->view('header');
$this->load->view('appliedfor', $data);