Как я могу использовать значение переменной как константу?

  1. У меня есть сайт PHP, который использует языковые системы на основе метода «define». Например:

    define("_question_1", "How old are you?"); define("_question_2", "Question 2?"); define("_question_3", "Question 3?"); .... define("_question_10", "Question 10?"); 
  2. У меня есть 5-10 вопросов, которые мне нужно задать. И мне нужно выбрать вопрос, который я хочу задать. Поэтому я делаю запрос к моей БД. Что-то вроде:

     SELECT q_title FROM questions_db WHERE id=3 OR id=10; 

    База данных возвращает два значения TEXT (!):

     _question_3, _question_10 

    Кого я сохраняю:

     $a = _question_3; $b = _question_10; 
  3. Следующее, что мне нужно, это показать текст описания, описанного ранее. Когда я использую _question_3 как VARIABLE, он работает следующим образом:

     echo ""._question_3.""; //returns "Question 3?" 

    Но у меня есть только _question_3 как значение TEXT, и оно работает следующим образом:

     echo "".$a.""; //returns "_question_3" 

ВОПРОС: Как преобразовать текстовое значение в переменную PHP и сделать что-то вроде?

  define("_question_3", "Question 3?"); $a = _question_3; //text value //do something with $a.... echo "".$a.""; //returns "Question 3?" 

Спасибо за помощь. PS Пожалуйста, измените название, если оно не понятно для понимания.

Просто используйте constant() чтобы использовать значение переменной как константу, например

 echo constant($a); 
  1. В PHP вы можете использовать переменные переменные – имена динамических переменных.

     $a = '_question_3'; $b = 'Question 3?'; $$a = $b; echo $b; // prints "Question 3?" echo $_question_3; // prints "Question 3?" 

Но это нехорошее решение. Старайтесь не использовать имена динамических переменных.

  1. Может ли быть более подходящим для вас ассоциативный массив?

     $questions = []; // Creating an empty array $questions['_question_3']['question'] = 'Question 3?'; // Storing a question $questions['_question_3']['answers'] = [ // Adding answers 'Answer 1', 'Answer 2', 'Answer 3' ]; 
  2. Или объявите класс Question и создайте его экземпляры.

     class Question { public $Question; public $Answers; __construct($question, $answers) { $this->Question = $question; $this->Answers = $answers; } } $q1 = new Question('Question 1?', ['Answer 1', 'Answer 2', 'Answer 3']); 

Попробуйте константу (), она возвращает значение константы, например:

 var_dump(constant('YourConstantNameHere')); 

или с переменными

 var_dump(constant($a)); 

http://www.php.net/manual/en/function.constant.php