Вопрос, связанный с foreach и формирование массива в нём

Тема в разделе "PHP", создана пользователем Solomon Kane, 28 янв 2011.

Модераторы: latteo
  1. Solomon Kane

    Solomon Kane Постоялец

    Регистр.:
    26 авг 2009
    Сообщения:
    144
    Симпатии:
    9
    Есть такой код:
    PHP:
    foreach ($menu_titles as $key => $title
         {
    // тут идут разные ифы, которые, в общем-то, конечному результату отношения не имеют, единственное в них используется $key
    $menu_data[] = array($table.'_menu' => $title.$this->get_links_model->get_links($table));
         }      
    В итоге он выдаёт массив вида:
    PHP:
    Array
    (
        [
    0] => Array
            (
                [
    pages_menu] => Меню страниц
                
    // остальные элементы
        
    )
    Вопрос состоит в том, что сделать, чтобы в итоге получался примерно такой массив:

    array([pages_menu] => 'Меню страниц'), то есть чтобы на выходе получался ассоциативный массив, а не многомерный с числовыми индексами. Что надо поменять в этой строке?

    PHP:
    $menu_data[] = array($table.'_menu' => $title.$this->get_links_model->get_links($table));
    Уже все мозги сломал :(. Если убрать [], то в массив попадёт только последний результат цикла (а их там три). Зато массив будет такой, как надо. Если же оставить [], получается массив с числовыми индексами, а мне нужен именно ассоциативный, так как собираюсь применять потом экстракт. Понятно, что по экстракту можно пройтись фором обычным потом, но это нет. Уверен, что можно всё сделать в самом фориче.

    Спасибо за помощь!
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    PHP:
    //а если это
    $menu_data[] = array($table.'_menu' => $title.$this->get_links_model->get_links($table));

    //заменить на это 
    $menu_data[$table.'_menu'] = $title.$this->get_links_model->get_links($table));
    но но там у вас в цикле че-то как-то формируется ...
    возможно конечный результат будет неверный .... если переменная $table на каких-то итерациях цикла дублируется

    если он действительно будет неверный то выложите полный массив которые сейчас выходит ( со всеми индексами и ключами )
    ну и тот массив который необходимо получить ...
     
    Sunday и Solomon Kane нравится это.
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Попробуй так:
    PHP:
    $i=0;
    foreach (
    $menu_titles as $key => $title
         {
    // тут идут разные ифы, которые, в общем-то, конечному результату отношения не имеют, единственное в них используется $key
    $menu_data[$i] = array($table.'_menu' => $title.$this->get_links_model->get_links($table));
    $i++;
         }  
     
    Solomon Kane нравится это.
  4. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    Дино, что за ересь написал? Дополнительный счетчик и что он меняет?
    Chang уже дал рабочий пример.