2011-09-28 35 views
-1

謝謝你們。我的方式錯了。請不要發佈了。添加字段到數組沒有索引定義 - PHP

我有一些麻煩,我的數組。

我生成這樣我的數組:

private function _getMenuBar(){ 
    $data = array(); 
    $query = $this->db->query("SELECT * FROM df_menubar_table WHERE visible = 1 AND parent = -1 ORDER BY priority"); 
    foreach($query->result_array() as $row){ 
     $data[count($data)] = array(
     "menu" => array(
      "title" => $row['title'], 
      "url" => $row['url'], 
      "name" => $row['name'], 
      "selected" => 0 
     ) 
    ); 
    } 
    return $data; 
    } 

照例陣列將飼料等

陣列[0] =菜單=>數組(標題,URL,姓名,選擇的);

但我不想將$data[**count($data)**]定義爲索引並將'menu'定義爲索引。 CodeIgniter不支持傳遞給視圖的東西。因此我需要關鍵的是菜單

這意味着:

陣列[0] =菜單=>數組(標題,URL,姓名,選擇的);

到:

陣列[ '菜單'] =陣列(標題,URL,姓名,選擇的);

順便說一句,我試過+ =但它只是存儲最後一行。

謝謝。

編輯:

我想你的方式,它變成這樣:

我試了一下。但它變成這樣:

array(1) { 
    ["menu"]=> 
    array(5) { 
    [0]=> 
    array(1) { 
     ["menu"]=> 
     array(4) { 
     ["title"]=> 
     string(8) "اصلی" 
     ["url"]=> 
     string(30) "http://localhost/dreamfactory/" 
     ["name"]=> 
     NULL 
     ["selected"]=> 
     int(0) 
     } 
    } 
+0

請告訴我壞與最後一個數組的例子嗎?它只有一個項目,但你想要所有項目? – hakre

+0

這是在一個單一的領域轉動整個陣列:)。他們分開。 – MahanGM

+0

「單個字段」實際上是一個包含5個項目的數組。我不會打那個單。您將在模板中的'$ menu'中以數組形式提供它。你如何在你的模板中需要它,我認爲一個數組很好。 – hakre

回答

0

您需要某種類型的唯一標識符。將多個項目添加到數組['menu'],沒有唯一標識符,將導致最後/最新的項目覆蓋之前。你可以像下面那樣設置一個數組。

Array 1: 
Array (
    [menu] => Array (
    [0] => Array (
     [title] => Title 
     [url] => URL 
     [name] => Name 
     [selected] => Selected 
    ) 
    ) 
) 

Array 2: 
Array (
    [0] => Array (
     [title] => Title 
     [url] => URL 
     [name] => Name 
     [selected] => Selected 
    ) 
) 

最後一個可以帶或不帶菜單項。

代碼看起來像下面(簡化)

private function _getMenuBar(){ 
    $data = array(); 
    $query = $this->db->query("SELECT * FROM df_menubar_table WHERE visible = 1 AND parent = -1 ORDER BY priority"); 
    $countRows = 0; 
    foreach($query->result_array() as $row){ 
    $data[$countRows] = array(
     "title" => $row['title'], 
     "url" => $row['url'], 
     "name" => $row['name'], 
     "selected" => 0 
    ); 
    $countRows++; 
    } 
    return $data; 
} 
+0

我想這樣做,但CodeIgniter在將數組傳遞給視圖時,在視圖中應該使用字段名稱作爲像'$ menu'這樣的變量。但我不知道應該如何使用數字標識符。 – MahanGM

+0

添加一個變量$ countRows = 0;在foreach之前,然後在foreach的末尾放置$ countRows ++; $ countRows將是唯一標識符 –

+0

好吧,我現在測試它。 BTW!如果我這樣做,它就像'$ data [count($ data)]'。是吧?我所有的問題是CodeIgniter現在將數組本身傳遞給視圖如果不是這樣,我可以使用'$ data [$ i] [「menu」] [...]''。 – MahanGM

0

在$ data上做一個array_shift()。這樣,你就擺脫了array[0]包裝。這是你的意思嗎?如果沒有,請將ple ple更清晰

+0

好吧,我會嘗試。 – MahanGM

相關問題