簡體   English   中英

Codeigniter數組中的Foreach

[英]Foreach in array for codeigniter

因此,我正在使用codeigniter,並且嘗試使用Calendar類並將“事件”傳遞給我的日歷。 這是由一個數組和一個標識符完成的,如下所示:

$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'
)

您不能像嘗試那樣在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['data']中用空數組定義$calendar_info ,然后在foreach循環中將鍵添加為$calendar_info['data'][$row->menu_day]

您根本無法按照問題的排列方式在數組中放入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
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM