Создайте имя переменной PHP на основе других значений переменных и статического текста - PullRequest
3 голосов
/ 30 ноября 2009

Я хочу сообщить своей функции, какую переменную вызывать в зависимости от дня недели. День недели хранится в $ s_day, и переменные, которые я хочу вызвать, меняются в зависимости от того, какой это день.

, например

Я сохранил строку «Добро пожаловать на неделю» в $ d_monday_text1. Вместо того чтобы создать набор из 7 условных операторов (например, если date = monday echo $ foo, иначе, если date = tuesday echo $ bar ...), я могу изменить имя переменной, вызываемой в функции, путем объединения имени переменная

$s_day = date("l");
$text1 = '$d_'.$s_day.'_text1';

Я надеюсь, это оценивается как $ d_monday_text1, который, как упоминалось выше, имеет значение "Добро пожаловать на неделю". Итак, позже я бы хотел использовать:

echo $text1;

Чтобы получить результат = Добро пожаловать на неделю.

Я рассмотрел переменные переменные, которые могут быть подходящим способом, но я борюсь с синтаксисом. Я могу заставить его повторить объединенное имя, но не могу понять, как его оценить.

Ответы [ 3 ]

9 голосов
/ 30 ноября 2009

Переменные переменные не очень хорошая идея - вы должны использовать массивы. Они подходят этой проблеме намного, намного лучше.

Например, вы можете использовать что-то вроде этого:

$messages = array(
    'monday' => 'Welcome to the week',
    'tuesday' => 'Blah blah',
    'wednesday' => 'wed',
    'thursday' => 'thu',
    'friday' => 'fri',
    'saturday' => 'sat',
    'sunday' => 'week is over!'
);

$dayName = date('l');
echo $messages[$dayName];

Массивами являются формат данных , используемый для хранения нескольких связанных значений, таких как эти.

3 голосов
/ 30 ноября 2009

Вы можете использовать этот синтаксис:

$$ text1

Я использовал это раньше. Оценка приходит как в:

$ ($ text1)

0 голосов
/ 01 июля 2014

Давайте рассмотрим следующий пример:

$construction_no = 5;
$construction_5 = 'Door';

$var_name = 'construction_'.$construction_no;
$var_value = ${$var_name};
echo $var_value; //Door

Объектно-ориентированный подход

$var_value = $this->{$var_name};
echo $var_value; //Door 
...