За последние 24 часа нас посетили 18710 программистов и 1702 робота. Сейчас ищет 971 программист ...

Создание многомерного ассоциативного массива из строки

Тема в разделе "Прочие вопросы по PHP", создана пользователем Liquid Onion, 10 июн 2013.

  1. Liquid Onion

    Liquid Onion Новичок

    С нами с:
    10 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Привет, форумчане!

    Необходимо строку вида:
    Код (Text):
    1. $my_string = "a,b,c,d"; // может быть любой длины, с обязательным разделителем
    автоматом, для любой длины строки (ибо см. выше) привести к виду такому:

    Код (Text):
    1. Array
    2. (
    3.     [a] => Array
    4.         (
    5.             [b] => Array
    6.                 (
    7.                     [c] => Array
    8.                         (                    
    9.                             [d] => Array
    10.                                (
    11.                                )
    12.                 )
    13.                          )
    14.  
    15.         )
    16. )
    То есть сабж. Возможно ли такое, что-то не врублюсь...
    Заранее спасибо :)
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это называется "рекурсия". очень важно решить такую задачу хотя бы раз самому.
     
  3. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Разабрать через explode с разделителем и сделать новый массив.
     
  4. Liquid Onion

    Liquid Onion Новичок

    С нами с:
    10 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Раньше приходилось лишь обход дерева делать, а тут, что-то, встрял...

    Вот так и начал, не пойму, как их вставлять один в другой.

    Спасибо, попробую, покопаю поглубже!
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    даю наводку: эксплод имеет третий параметр ;)
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    можно и без рекурсии. через ссылки например
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    То есть вы хотите массив в массиве или из каждого названия сделать отдельный массив?
     
  8. Liquid Onion

    Liquid Onion Новичок

    С нами с:
    10 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Код (Text):
    1.  
    2.  limit
    3.  
    4.     Если аргумент limit является положительным, возвращаемый массив будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки string.
    5.  
    6.     Если параметр limit отрицателен, то будут возвращены все компоненты кроме последних -limit.
    7.  
    8.     Если limit равен нулю, то он расценивается как 1.
    Зачем это, в моём случае?

    Массив в массиве в массиве и т.д.
     
  9. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    чтото типа
    Код (PHP):
    1. $str = "a,b,c,d";
    2. $a=array();
    3. $ref=&$a;
    4. foreach(explode(',',$str) as $v) {
    5.  $ref[$v]=array();
    6.  $ref=&$ref[$v];
    7. }
    8. echo '<pre>';
    9. print_r($a);
     
  10. Liquid Onion

    Liquid Onion Новичок

    С нами с:
    10 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Спасибо огромное всем, а, в особенности, runcore!

    Учить и учить мне php. Этим и займусь! ;)
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у тебя не возникло вопроса по поводу значка & случано?
     
  12. Liquid Onion

    Liquid Onion Новичок

    С нами с:
    10 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Нет, я изучал, когда-то, php и знаком с этими ссылки, спасибо. Ну, ещё и сейчас освежил в памяти...