Добавить поле в массив без определения индекса - PHP - PullRequest
0 голосов
/ 28 сентября 2011

Спасибо, ребята.Я ошибался в своем пути.Пожалуйста, не публикуйте больше.

У меня возникли проблемы с моим массивом.

Я создаю свой массив следующим образом:

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 => array (title, url, name, selected);

, но я не хочу определять $data[**count($data)**] как индекс и определять 'menu'в качестве индекса.И CodeIgniter не поддерживает что-то подобное для перехода к представлениям.Поэтому мне нужно набрать меню .

Это значит:

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

To:

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 голосов
/ 28 сентября 2011

Вам нужен тип уникального идентификатора. Добавление нескольких элементов в массив ['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 голосов
/ 28 сентября 2011

сделать array_shift() на $ data.Таким образом, вы избавитесь от оболочки array[0].Это то, что вы имели в виду?Если нет, просьба быть более явным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...