我正在尝试创建一个函数
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']
...。
尝试这样的事情...
控制器:
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
}
}
我不知道我是否理解你,但我知道你有一个数组 喜欢
$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>";
}
}