За последние 24 часа нас посетили 55555 программистов и 1797 роботов. Сейчас ищут 893 программиста ...

Синтаксические ошибки на php

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

  1. dhorh

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

    С нами с:
    19 июл 2012
    Сообщения:
    39
    Симпатии:
    0
    Здравствуйте, помогите!!!

    Для начала расскажу начало истории, чтобы было понятно то, что я хочу сделать.

    Вот решил перевести свой сайт на разные языки...

    В каждый языковой файл я поместил функцию с массивом, вот примерно таким(для рус):
    Код (Text):
    1. function lang($str)
    2. {
    3.     $lang = array(
    4.         'main' => 'Главная',
    5.         'categories' => 'Категории',
    6.         'relatedVideos' => 'Похожие видео',
    7.         'categories' => 'Категории',
    8.  
    9.     );
    10.    
    11.     $str = $lang[$str];
    12.    
    13.     if(in_array($str, $lang)) return $str; else return false;
    Там где был текст, я подставлял вывод массива
    Код (Text):
    1. <?=lang('имя любого из элемента массива lang')?>
    В зависимости от выбранного языка, выбирается массив с определённым языком, а там уже выбирается определённый элемент массива, который я указал...
    Ну, думаю здесь всё понятно, я не стал придумывать велосипед.

    Проблемы начались после того, как мне пришлось выводить язык не из статического текста, а с динамического, к примеру выборкой из базы данных, поясню:
    если я указывал на странице так
    Код (Text):
    1. <?=lang('main')?>
    , то выводилось или "Main" или "Главная", в зависимости от языка, но если элемент массива я указываю не на прямую, а через переменную
    Код (Text):
    1.  
    2. <?
    3. $example = main;
    4. =lang('$example')
    5. ?>
    , то почему-то сама переменная не подставляется в массив и массив дальше выбирает элемент из файла, а наоборот ничего не подставляет, то есть переменную $example считает просто тестом и ищет в массиве lang элемент "$example".

    Уважаемые господа программисты, подскажите как сделать так, чтобы переменная в массив подставлялось и всё работало. Бился над этой задачей весь вечер, но увы и ах, хотя может быть я просто туплю, и здесь ничего нет сложного, заранее спасибо.
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Тупите по страшной силе...

    Вы изобрели еще хуже, чем велосипед...

    Код (PHP):
    1. $e='main';
    2. lang($e); 
     
  3. dhorh

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

    С нами с:
    19 июл 2012
    Сообщения:
    39
    Симпатии:
    0
    а ну да, только с примером, с первым примеров так и есть, всё работает, огромное спасибо, но есть к сожалению и второй пример, вот он:

    Код (Text):
    1. do
    2.             {
    3.                             $result10 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$myrowTR[id]'",$db);
    4.                 $sum = mysql_fetch_array($result10);
    5.                                
    6.                                 $e = $myrowTR[link_en];
    7.                                
    8.                 printf ("<li> <a href='$SERVER/category/%s' title='%s'>lang($e)</a></li>",$myrowTR["link_en"],$myrowTR["cat"]);
    9.             }
    10.             while ($myrowTR = mysql_fetch_array($resultTR));
    11.             }
    тут вытаскивается из базы данных, и $e тут как раз выводит тот самый массив, тут я убрал по вашему совету кавычки, но результата ноль((