2016-05-09 3 views
0

Я пытаюсь создать функцию test, которая будет использоваться для нескольких типов зданий, но я не могу передать переменные в представление.Передача многомерного массива из контроллера для просмотра в Codeigniter

код контроллера:

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'] ... для каждого типа здания.

+0

Вы показали результаты, которые точно так же запрограммированы. Пожалуйста, объясните * ваши * ожидаемые результаты. Чего вы пытаетесь достичь? – Sparky

ответ

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>"; 
    } 
} 
Смежные вопросы