所以,我正在使用codeigniter,我正在尝试使用日历类并将“事件”传递给我的日历。这是通过数组和标识符来完成的:
$calendar_info = array(
'month' => '12',
'year' => '2013',
'data' => array(
3 => 'Spaghetti<br/>Meatballs<br/>Salad<br/>Canned Fruit',
4 => 'Ham<br/>Mashed Potatoes<br/>Corn<br/>Salad</br>'
)
);
现在我无法将菜单项硬编码到应用程序中,我从数据库中获取它们。我的问题在于将foreach放入数组中,我收到以下错误:
Parse error: syntax error, unexpected T_FOREACH, expecting ')'
该错误只是一部分,以免泄露我的网址。以下是我现在正在尝试做的并得到上述错误。
$this->db->select('*');
$this->db->from('menus');
$this->db->where('user_id', $session_data['id']);
$query = $this->db->get();
$calendar_info = array(
'month' => '12',
'year' => '2013',
'data' => array(
foreach ($query->result() as $row)
{
$row->menu_day => $row->menu_entree.'<br/>'.$row->menu_sideone.'<br/>'.$row->menusidetwo.'<br/>'.$row->menudessert
}
),
);
更新
这正是我在下面尝试做的事情:
我有一个数据库表,用于保存每月每天的菜单项。
列是:
menu_day
menu_month
menu_entree
menu_sideone
menu_sidetwo
menu_dessert
数组需要如下所示:
array(
menu_day => 'menu_entree<br/>menu_sideone<br/>menu_sidetwo<br/>menu_dessert
)
或者例如:
array(
3 => 'Spaghetti<br/>Meatballs<br/>Salad<br/>Canned Fruit'
)
答案 0 :(得分:3)
你不能像你想要的那样在array()
声明中循环。相反,正确的做法是使用循环构建您的数组,然后将分配到$calendar_info['data']
。
不要将PHP代码视为动态构建的东西。它是您生成的数组数据结构,而不是定义它的代码。
// First build the array with your loop...
// An empty array to hold the result...
$data = array();
foreach ($query->result() as $row)
{
// Add array keys to the array while looping...
$data[$row->menu_day] = $row->menu_entree.'<br/>'.$row->menu_sideone.'<br/>'.$row->menusidetwo.'<br/>'.$row->menudessert;
}
$calendar_info = array(
'month' => '12',
'year' => '2013',
// Then assign it into the appropriate place...
'data' => $data
);
您不需要构建变量$data
只是为了稍后扔掉。您也可以首先在$calendar_info
中使用空数组定义$calendar_info['data']
,然后在foreach
循环中添加键$calendar_info['data'][$row->menu_day]
。
答案 1 :(得分:1)
你根本无法将foreach
置于数组中,就像问题的布局一样。您需要使用foreach
循环提前设置值,然后将该数组放入$calendar_info
:
$this->db->select('*');
$this->db->from('menus');
$this->db->where('user_id', $session_data['id']);
$query = $this->db->get();
$data_array = array();
foreach ($query->result() as $row) {
$data_array[$row->menu_day] = $row->menu_entree . '<br/>' . $row->menu_sideone . '<br/>' . $row->menusidetwo . '<br/>' . $row->menudessert;
}
$calendar_info = array(
'month' => '12',
'year' => '2013',
'data' => $data_array
);