构建基于其他变量值和静态文本的PHP变量名称

问题描述:

我想告诉我的函数根据星期几来调用哪个变量。星期几存储在$ s_day中,我想调用的变量基于哪一天发生变化。构建基于其他变量值和静态文本的PHP变量名称

例如

我在$ d_monday_text1中存储了一个字符串'Welcome to the week'。而不是建立一组7个条件语句(例如,如果date = monday echo $ foo,否则如果date = tuesday echo $ bar ...),我可以通过连接名称的方式更改函数中调用的变量的名称变量?

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

我希望这个计算结果为d_monday_text1 $,正如上面提到的,具有值“欢迎周”。所以,稍后我想要使用:

echo $text1; 

产生结果输出=欢迎来到本周。

我已经看过变量,这可能是去这里的方式,但我正在努力与语法。我可以得到它以回显连接的名称,但我无法弄清楚如何得到该名称评估。

+0

可能重复http://stackoverflow.com/ questions/130240/can-i-use-a-generated-variable-name-in-php) – outis 2010-10-01 04:04:15

可变变量是不是一个好主意 - 你还是使用数组。他们很适合这个问题,好多了。

例如,你可以使用这样的事情:

$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]; 

数组是用于存储多个相关值,如这些的数据格式。

+0

感谢贾尼。我认为这将适用于比我小的数据集。它确实适合所给出的例子,这是我在这里做什么的简单解释。 – jkramp 2009-11-30 05:17:06

+0

一般来说,我认为只要有任何大小的数据集,就应该使用数组。对变量使用动态命名通常是一个糟糕的主意,因为它不会给数据提供任何结构,并且使得代码的可读性降低。 – 2009-11-30 05:22:05

+0

好的,让我对它多加一点面试,然后我会更新这个问题,看看是否有更好的方法去使用数组。可能由于我的数据结构的方式,使用动态表达式比使用数组更容易。这并不是说我的数据结构不是有缺陷的。 – jkramp 2009-11-30 05:31:56

你可以使用这个语法:

$$文本1

我以前使用过这一点。评价当属:

$($文本1)

让我们看看下面的例子:

$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 
的[?我可以使用PHP中生成的变量名(