将多维数组从控制器传递到 Codeigniter 中的视图

问题描述 投票:0回答:2

我正在尝试创建一个函数

test
,该函数将用于多种建筑物类型,但我无法将变量传递到视图中。

控制器代码:

public function index($data = NULL){
   $data1 = $this->test('hotel');
   $data2 = $this->test('restaurant');
   $data = array_merge($data1,$data2);
   $this->load->view('templates/default',$data); 
}

public function test($building_type){
   $data[$building_type]['title'] = 'this is a title for '.$building_type;
   for ($i=1;$i<=3;$i++) {
       $data[$building_type][$i] = $building_type.' button';
   }
   $data['building_type_array'] = ['hotel', 'restaurant'];       
   return $data;
}

查看代码:

foreach ($building_type_array as $value) {
    echo $value;           // echoes 'hotel' and 'restaurant'
    echo $value['title'];  // throws 'Illegal string offset'
    echo $value[3];        // echoes the 4th letter of 'hotEl' and 'resTaurant'
}
echo $building_type['title']; // Throws  'Undefined variable: building_type'

echo $hotel['title'];         // echoes 'this is a title for hotel'
echo $hotel[3];               // echoes 'hotel button'

前四个

echo
是没有给出预期结果的尝试。
echo
的最后两个
View
给出了预期的结果,但我想使用通用变量来避免为每种建筑类型编写
$hotel['title']
$restaurant['title']
...。

php arrays codeigniter multidimensional-array
2个回答
0
投票

尝试这样的事情...

控制器:

public function index($data = NULL) {
   $data['building_types']['hotel'] = $this->test('hotel');
   $data['building_types']['restaurant'] = $this->test('restaurant');

   $this->load->view('templates/default', $data); 
}

查看:

foreach ($building_types as $building) {

    foreach ($building as $value) {
        echo $value;   // whatever
    }

}

0
投票

我不知道我是否理解你,但我知道你有一个数组 喜欢

$m_array = //come from model
array(
     array(
          'title' => 'title',
          '1'     => 'value1',
          '2'     => 'value2',
          '3'     => 'value3'
     ),
    array(
          'title' => 'title2',
          '1'     => 'value1-2',
          '2'     => 'value2-2',
          '3'     => 'value3-2'
     ),
    array(
          'title' => 'title3',
          '1'     => 'value1-3',
          '2'     => 'value2-3',
          '3'     => array('one' => 'v-one', 'two' => 'v-two')
     ),
     //etc
    );

在你看来

foreach($m_array as $item => $value){
    if( is_array($value)){
        foreach($value as $row => $value2){
            echo "<td>$item</td>";
            echo "<td>$row</td>";
            echo "<td>$value2</td>";
        }
    }
    else{
        echo "<td>$item</td>";
        echo "<td>$value</td>";
        echo "<td>-</td>";
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.