Я хочу сообщить своей функции, какую переменную вызывать, исходя из дня недели. День недели хранится в $ s_day, а переменные, которые я хочу вызывать, изменяются в зависимости от того, в какой день.
например
Я сохранил строку «Добро пожаловать на неделю» в $ d_monday_text1. Вместо того, чтобы создавать набор из 7 условных операторов (например, если date = monday echo $ foo, else if date = tuesday echo $ bar …), могу ли я изменить имя переменной, вызываемой в функции, объединив имя переменная?
$s_day = date("l"); $text1 = '$d_'.$s_day.'_text1';
Я надеюсь, что это оценивается до $ d_monday_text1, который, как упоминалось выше, имеет значение «Добро пожаловать на неделю». Итак, позже я бы хотел использовать:
echo $text1;
Чтобы получить итоговый результат = Добро пожаловать на неделю.
Я просмотрел переменные переменные, которые могут быть здесь, но я борюсь с синтаксисом. Я могу заставить его эхо конкатенировать имя, но я не могу понять, как получить это имя.
Переменные переменные – это не очень хорошая идея. Вы должны использовать массивы. Они справляются с этой проблемой гораздо лучше.
Например, вы можете использовать что-то вроде этого:
$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];
Массивы – это формат данных, используемый для хранения нескольких связанных значений, таких как эти.
Вы можете использовать этот синтаксис:
$$ text1
Я использовал это раньше. Оценка происходит так:
$ ($ Text1)
Рассмотрим следующий пример:
$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