【问题标题】:Construct a PHP variable name based on other variable values and static text根据其他变量值和静态文本构造 PHP 变量名
【发布时间】:2010-12-21 12:50:10
【问题描述】:

我想告诉我的函数根据星期几调用哪个变量。星期几存储在 $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;

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

我研究了变量变量,这可能是这里的方法,但我在语法上苦苦挣扎。我可以让它回显串联的名称,但我不知道如何评估该名称。

【问题讨论】:

标签: php variable-variables


【解决方案1】:

可变变量不是一个好主意 - 您应该使用数组。它们更适合这个问题。

例如,您可以使用如下内容:

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

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

【讨论】:

  • 谢谢贾尼。我认为这适用于比我拥有的更小的数据集。它确实符合给出的示例,这是对我在这里所做的事情的简化解释。
  • 一般来说,我认为只要有任何大小的数据集,就应该使用数组。对变量使用动态命名通常不是一个好主意,因为它不会为数据提供任何结构,并且会降低代码的可读性。
  • 好的,让我再谈一谈,我会更新这个问题,看看是否有更好的方法来使用数组。可能由于我的数据的结构方式,使用动态表达式比使用数组更容易。这并不是说我的数据结构没有缺陷。
【解决方案2】:

您可以使用以下语法:

$$text1

我以前用过这个。评价如下:

$($text1)

【讨论】:

    【解决方案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 
    

    【讨论】:

      猜你喜欢
      • 2016-02-28
      • 2017-02-08
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      相关资源
      最近更新 更多