0

私は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番目にロードされたビュー(セクション2内)では、変数$ functionがセクション1から設定されており、他の値(traks、unit)が渡されたものであることに気付きました。

2番目のビューで変数関数がまだ設定されているのはなぜですか?リセットすべきではありませんか?

4

2 に答える 2

2

Codeigniter 3では、メソッドを使用してビュー内の変数をリセットすることもできます

$this->load->clear_vars();

ドキュメントでそれを参照してください

于 2016-04-20T07:09:04.480 に答える
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'=>'')) ?>
于 2012-10-21T22:35:04.983 に答える