Как передать многомерный массив в представление в CodeIgniter - PullRequest
1 голос
/ 16 августа 2011

это действительно делает мой орех в. Я передаю многомерный массив для представления, как это:

$res = $this->deliciouslib->getRecentPosts();

(как вы видите, это восхитительный API, с которым я играю)

$ result - это массив, а print_r ($ result) дает что-то вроде этого:

Моя проблема заключается в том, чтобы повторить это в представлении! Я пробовал что-то вроде этого,

$result = $this->deliciouslib->getRecentPosts();
$i=0;

foreach($result as $value)
{                   
     $val = 'val'.$i;           
     $data[$val]=$value;
     $i++;          
}

$this->load->view('delicious_view',$data);
return true;

А потом, в представлении что-то вроде ...

foreach ($val0 as $value)
{
   echo $value."<br>";
}

Очевидно, это не сработает, так как мне нужен весь "$ val (i)"!.
Человек, у меня есть BrainCramp! Я, наверное, танцую вокруг ответа, как баскетбол вокруг обруча, но, тем не менее, я в полном замешательстве. Любые идеи о том, как я могу выполнить итерацию по всему массиву, были бы наиболее полезны ...

Ответы [ 3 ]

2 голосов
/ 16 августа 2011

В CodeIgniter, когда вы передаете массив представлению, каждому ключу задается простая переменная:

 $data = array('foo' => 'bar');
 $this->load->view('myview', $data)

 // In your view
 echo $foo; // Will output "bar"

Поэтому, если вы хотите передать массив, просто установите значение в виде массива:

 $data = array('foo' => array('bar1', 'bar2') );
 $this->load->view('myview', $data)

 // In your view
 foreach($foo as $bar) {
   echo $bar . " "; // Will output "bar1 bar2 "
 }
2 голосов
/ 16 августа 2011

Предполагая, что $this->deliciouslib->getRecentPosts() возвращает итерацию, вы можете попробовать:

$data['delicious_posts'] = $this->deliciouslib->getRecentPosts();

и передайте его на просмотр как обычно. Затем в представлении вы делаете что-то вроде:

foreach($delicious_posts as $delicious_post){
   print_r($delicious_post);
}
0 голосов
/ 06 июля 2017

Ответом на вашу проблему может быть способ вызова данных из массива. Возможные решения:

  1. Получить данные в массиве с индексом.

    $data['**result**']=$this->deliciouslib->getRecentPosts();
    
  2. Теперь, поскольку результат getRecentPosts() является массивом данных, передайте его для просмотра

    $this->load->view('view_name', $data);
    
  3. Если результат является массивом, на странице просмотра, получить к нему доступ через RIGHT INDEXING

    $result[0-9]['col_name'] e.g **var_dump($result[9]['Title']**);
    

    В противном случае, если это массив объектов,

    $result[0-9]=>col_name<br> e.g **var_dump($result[9]=>title)**; 
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...