我正在使用Codeigniter的最新稳定版本。
这是控制器的一部分:
$data = array(
'tracks' => $this->tracks_model->get(NULL, 'start_date'),
'longest_distance' => $this->tracks_model->get(10, 'distance'),
'longest_time' => $this->tracks_model->get(10, 'moving_time')
);
$this->load->view('statistics_view', $data);
这里是文件statistics_view.php中的部分代码:
<section>
<h3>Section 1</h3>
<?php $this->load->view('podium_view', array('tracks' => $longest_time, 'unit' => 'ore', 'function' => 'minutes_to_hours')) ?>
</section>
<section>
<h3>Section 2</h3>
<?php $this->load->view('podium_view', array('tracks' => $longest_distance, 'unit' => 'km')) ?>
</section>
我注意到在第二个加载的视图(第2部分内部)中,变量$ function仍然是从第1部分设置的,其他值(traks,unit)是我传递的值。
为什么在第二个视图中仍然设置变量函数? 不应该重置?
答案 0 :(得分:2)
答案 1 :(得分:1)
Codeigniter使用extract来转换您传递的变量数组 见http://php.net/manual/en/function.extract.php Extract继续向符号表添加变量,视图仅包含在PHP文件中。 因此变量范围是相同的,您可以访问早期定义的所有变量。如果发现冲突,则提取的默认行为是覆盖。 如果要重置,则必须传递一些值。
<?php $this->load->view('podium_view', array('tracks' => $longest_distance, 'unit' => 'km', 'function'=>'')) ?>