将字段添加到没有索引定义的数组 - PHP

时间:2011-09-28 18:17:05

标签: php arrays codeigniter

谢谢你们。我的方式错了。请不要再发帖了。

我的阵列遇到了一些麻烦。

我以这种方式生成我的数组:

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;
  }

像往常一样,数组会像

一样提供

array [0] = menu =>阵列(标题,URL,姓名,选择的);

但我想不将$data[**count($data)**]定义为索引并将'menu'定义为索引。并且CodeIgniter不支持传递给视图的类似内容。因此我需要键入菜单

这意味着:

array [0] = menu =>阵列(标题,URL,姓名,选择的);

要:

array ['menu'] = array(title,url,name,selected);

顺便说一句,我试过+ =但它只存储了最后一行。

感谢。

修改

我试着按照你的方式转向:

我试了一下。但它转向了这个:

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)
      }
    }

2 个答案:

答案 0 :(得分:0)

对$ data执行array_shift()。这样,你摆脱了array[0]包装器。这是你的意思吗?如果没有,请更明确

答案 1 :(得分: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;
 }