使用代码点火器将row_array添加到result_array foreach循环


Adding row_array to result_array foreach loop with codeigniter?

我目前正在构建一个web应用程序,求职者可以在其中查看他们申请的工作,非常简单。

当他们"应用"时,此应用程序存储在数据库表"applications"中,其中有一个"job_id"列,用于存储"jobs"数据库表中作业的"id"。

目前,我可以提取上述求职者提出的每一份申请。

不过,我无法循环浏览每个应用程序并找到与该应用程序对应的作业,然后将row_array()添加到较大的数组中,然后用foreach循环输出作业。

本质上,我在问如何将数组添加到数组中,然后输出完整的数组?

适用于.php(控制器)

$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); 

适用于.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个错误:未定义的索引:作业,错误在这一行,显然是foreach中控制器中的$data['jobs']

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

谢谢你的帮助。

您是正确的:

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

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

相反,可以尝试以下方法:

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

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

更改控制器代码:

$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);