За последние 24 часа нас посетили 23625 программистов и 1524 робота. Сейчас ищут 847 программистов ...

строка, массив, значение

Тема в разделе "Прочие вопросы по PHP", создана пользователем brainiac, 19 апр 2012.

  1. brainiac

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

    С нами с:
    5 янв 2011
    Сообщения:
    33
    Симпатии:
    0
    Адрес:
    Новосибирск
    Адекватно не смог обозвать тему.
    Суть проблемы: есть строка вида "index|error|exist", есть массив:
    Код (Text):
    1.  
    2. $lang = array(
    3.     'index' => array(
    4.         'exist' => 'всякоразный текст',
    5.     ),
    6. );
    Нужно имя эту строку - вытащить значение из массива. Вложенность может быть любая.
    Придумал пока 1 выход - строку превратить с preg_replace в строку $lang[index][..][..] и потом добавив пару символов, засунуть это в eval. Но это все плохо и криво. Предложения?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    рекурсия как вариант

    а нафига вобще так делать?
     
  3. KaFe

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

    С нами с:
    13 апр 2012
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Код (Text):
    1.  
    2.   $lang = array(
    3.    'index'   => array(
    4.      'error' => array (
    5.        'exist'   => 'всякоразный текст',
    6.       )
    7.    ),
    8. );
    9.  
    10.     function getLangWord($address){
    11.       global $lang;
    12.       $address =  '[\'' . str_replace('|', '\'][\'', $address) . '\']';
    13.       return eval('return $lang' . $address . ';?>');
    14.     }
    15.    
    16.     echo getLangWord('index|error|exist');
    17.     die;
    Но это действительно бред