За последние 24 часа нас посетили 31950 программистов и 1380 роботов. Сейчас ищут 813 программистов ...

Массивы

Тема в разделе "PHP для новичков", создана пользователем dots_rei, 20 мар 2010.

  1. dots_rei

    dots_rei Активный пользователь

    С нами с:
    7 авг 2009
    Сообщения:
    193
    Симпатии:
    0
    Доброго времени суток!

    Имеется вот такой кусок кода:
    PHP:
    1.  
    2. <?php
    3. $pname='ar'.$row['link'];
    4. $$pname=array();
    5. while ($prow=mysql_fetch_assoc($presult))
    6.     $$pname[$prow['link']]=$prow['name'];
    7. ?>
    8.  
    На выходе получаю пустой массив.

    Использование var_dump($$pname) выдает array(0) { }.
    Если же обращаюсь к элементу массива, указывая ключ var_dump($$pname[$prow['link']]), то получаю необходимое значение массива (то, которое и должно быть туда занесено).

    Что я не учла/в чем ошиблась?

    Заранее спасибо!
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Собственно самый главный вопрос: а зачем использовать ссылки?
    С чем связана эта необходимость?
     
  3. dots_rei

    dots_rei Активный пользователь

    С нами с:
    7 авг 2009
    Сообщения:
    193
    Симпатии:
    0
    динамическое формирование меню на сайте. из базы выбирается информация о разделах и соответствующих им подразделах, заносится в массивы вида:

    $armenu['news']='Новости'; // раздел
    $arnews['qqq']='Подраздел 1';
    $arnews['www']='Подраздел 2';

    $armenu['about']='О сайте'; // раздел
    $arabout['sss']='Подраздел 1';

    и так далее. потом данные массивы обрабатываются функцией, которая и формирует итоговое выпадающее меню.

    представленный кусок кода - формирование массива подраздела.
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я извиняюсь за неверное название "этого" ссылками.
    Если не ошибаюсь, это именуется "переменной переменной".
    Ну так вот, зачем оно надо?

    Динамическое формирование или что-либо другое, но не вижу абсолютно никакого смысла использовать эту фичу.
    Тут нужен многомерный массив просто-напросто.
     
  5. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Массивы нельзя формировать динамически. Но тут это и не нужно:
    PHP:
    1.  <?
    2. $names=array();
    3.  
    4. while ($prow=mysql_fetch_assoc($presult))
    5.     $names['ar'.$row['link']][$prow['link']]=$prow['name'];
    Потом для $names сделать extract().
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    C'est quoi, ça?
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    можно-можно
    PHP:
    1. <?php ${$pname}[$prow['link']] =?>
    а то интерпретатор не знает что использовать для имени ($pname[$prow['link']] или $pname)

    и согласен с высказавшимися ранее,
     
  8. dots_rei

    dots_rei Активный пользователь

    С нами с:
    7 авг 2009
    Сообщения:
    193
    Симпатии:
    0
    спасибо большое за ответы :)
     
  9. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Точно. Блин, я же знал. Чего-то я... чего-то того-то совсем. :)