Передача нескольких переменных в представление?

поэтому у меня есть две переменные $posts и $comments которые содержат массив сообщений и комментариев соответственно, у меня есть отдельное представление, которое принимает эти переменные, выполняет цикл foreach и печатает их на одной странице. Вопрос здесь в том, как передать обе переменные в представление?

Если это одна переменная, я $this->load->view('myview',$myvar) ее так, как этот $this->load->view('myview',$myvar) .

Я пробовал передать его как массив, похожий на этот, но все равно он не работает.

 $data=array($var1,$var2); $this->load->view('myview',$data); 

Любая помощь будет принята с благодарностью! Благодарю.

Related of "Передача нескольких переменных в представление?"

Вам нужно получить доступ к переменной в своем представлении при ее передаче. Использование array($var1,$var2); действительно, но, вероятно, не то, что вы хотели достичь.

Пытаться

 $data = $var1 + $var2; 

или

 $data = array_merge($var1, $var2); 

вместо. См. « Views» для подробной документации о доступе к переменным, переданным в представление.

Проблема с использованием array($var1,$var2); что вы создадите две переменные вида: ${0} и ${1} (ключи массива становятся именами переменных, у вас есть два ключа в вашем массиве: 0 и 1 ).

Эти имена переменных являются недопустимыми ярлыками, поэтому вам нужно заключить имя с {} на уровне представления.

Благодаря этому вы теряете способность использовать переменные полезными.

Самое легкое в своем контроллере:

 $data['posts'] = $posts; $data['comments'] = $comments; $this->load->view('your_view', $data); 

Тогда, на ваш взгляд, вы просто просто делаете что-то вроде:

 foreach($posts as $post) { ... } 

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

Использование ассоциативного массива выглядит наилучшим решением. взять массив

 $data = array( 'posts' => $posts, 'comments' => $comments, ); $this->load->view('myview',$data); 

Вероятно, это поможет вам найти решение.

это другой и рекомендуемый способ использования compact :

 $data1 = 'your data'; $data2 = 123; $data3 = array(); $this->load->view('myview', compact('data1', 'data2', 'data3'); 

пытаться

  $data1 = 'your data'; $data2 = 123; $data3 = array(); $this->load->view('myview', $data1 + $data2 + $data3); 
 $this->render($views_array,$data);