2011-09-28 36 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

相关问题