Кодовый воспламенитель foreach и view - PullRequest
0 голосов
/ 14 января 2011

Я использую цикл foreach в моем контроллере

foreach ($x as $y) {
// do some stuff 
// load view
            $this->load->view('success', $data);
// $data can be multiple arrays
}

это делает работу .. но css, js, элементы в представлении повторяются ..

подскажите пожалуйста, как сделать css, js для загрузки только один раз:)

спасибо

Ответы [ 3 ]

1 голос
/ 14 января 2011
foreach ($x as $y) {
// do some stuff 
// $data can be multiple arrays
}

//load the view after the foreach has finished
$this->load->view('success', $data);

В настоящее время вы загружаете представление несколько раз на каждой итерации цикла. Таким образом, он загружает его после завершения цикла.

Вторая идея

Из вашего кода я полагаю, что вы переопределяете переменную $data на каждой итерации цикла

foreach ($x as $y) {
// do some stuff 
// 
    $data['array'] = array("here","is","an","array");
}

//load the view after the foreach has finished
$this->load->view('success', $data);

В приведенном выше примере после загрузки представления будет один массив в $ data ['array'], потому что вы перезаписываете его каждый раз. Если вы хотите, чтобы $data['array'] был массивом из нескольких подразделений, как вы предлагаете, попробуйте это ...

foreach ($x as $y) {
// do some stuff 
// 
    $data['array'][] = array("here","is","an","array");
}

//load the view after the foreach has finished
$this->load->view('success', $data);

Это добавит $data['array'] вместо того, чтобы перезаписать его, и вы получите массив всего, что вы добавите к нему на протяжении всего цикла.

1 голос
/ 14 января 2011

Скорее всего, " делает некоторые вещи ", которые нужно поместить в многомерный массив, а не непосредственно в массив $data.Лучше опубликовать свой « do что-то» »и свое мнение, но в любом случае, вот как вы должны это сделать:

$data_holder = array();
foreach ($x as $y) {
// do some stuff 
$data_holder[] = $do_some_stuff_results;
}
$data['do_stuff_array'] = $data_holder;
$this->load->view('success', $data);

Теперь вы можете зациклить эту переменную в своем представлении ине только получить один результат, может быть, что-то вроде:

foreach ($do_stuff_array as $arr)
    echo "<li><img src=\"" . $arr['img_src'] . "\" alt=\"" . $arr['img_title'] . "\" /></li>";
1 голос
/ 14 января 2011

Это потому, что вы загружаете представление в операторе foreach. Каждый раз, когда цикл повторяется, представление загружается снова. Вам нужно собрать ваш $data вместе в цикле, а затем вызвать представление после завершения цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...