提问人:jkramp 提问时间:11/30/2009 更新时间:7/1/2014 访问量:6548
基于其他变量值和静态文本构造 PHP 变量名称
Construct a PHP variable name based on other variable values and static text
问:
我想告诉我的函数根据星期几调用哪个变量。星期几存储在 $s_day 中,我想调用的变量会根据它是哪一天而变化。
例如:
我在 $d_monday_text1 中存储了一个字符串“欢迎来到本周”。与其构建一组 7 个条件语句(例如,if date=monday echo $foo,else if date=tuesday echo $bar...),我可以通过连接变量名称来更改函数中调用的变量的名称吗?
$s_day = date("l");
$text1 = '$d_'.$s_day.'_text1';
我希望这能计算出 $d_monday_text1,如上所述,它的值为“欢迎来到本周”。所以,稍后我想使用:
echo $text1;
产生结果输出 = 欢迎来到本周。
我已经研究了变量变量,这可能是要走的路,但我正在为语法而苦苦挣扎。我可以让它呼应串联的名称,但我不知道如何评估该名称。
答:
3赞
Kenji Kina
11/30/2009
#1
您可以使用以下语法:
$text 1美元
我以前用过这个。评估内容如下:
$($text 1)
10赞
Jani Hartikainen
11/30/2009
#2
变量不是一个好主意 - 你应该使用数组。它们更适合这个问题。
例如,您可以使用如下内容:
$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
11/30/2009
谢谢贾尼。我认为这适用于比我更小的数据集。它确实符合给出的示例,这是对我在这里所做的事情的简化解释。
0赞
Jani Hartikainen
11/30/2009
一般来说,我认为只要你有任何大小的数据集,就应该使用数组。对变量使用动态命名通常是一个糟糕的主意,因为它不会为数据提供任何结构,并且会降低代码的可读性。
0赞
jkramp
11/30/2009
好的,让我再多说一点,我会更新这个问题,看看是否有更好的方法来使用数组。可能是由于我的数据结构方式,使用动态表达式比使用数组更容易。这并不是说我的数据结构没有缺陷。
0赞
Sergey Onishchenko
7/1/2014
#3
让我们考虑以下示例:
$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 中的变量变量
下一个:变量:何时有用?[复制]
评论