使用PHP变量作为另一个变量名的一部分

时间:2018-05-29 23:44:34

标签: php variables

我有一个名为$ repeater的变量,它可以是低,中或高。

我也有变量叫......

$low_protein_feed
$moderate_protein_feed
$high_protein_feed

我想根据$ repeater的值来调用其中一个变量。

我得到了这个......

echo "${$repeater}_protein_feed";

...例如输出moderate_protein_feed。但是,当我希望它回显$ moderate_protein_feed变量的值时,它会像文本一样呼应。

我觉得我并不遥远。 感谢您的任何输入

3 个答案:

答案 0 :(得分:2)

虽然我建议不要使用这种编程,但有时候能够拥有变量变量名称很方便。也就是说,一个可以动态设置和使用的变量名。使用如下语句设置普通变量: 您将要使用$$将变量设置为变量名称。 http://php.net/manual/en/language.variables.variable.php

测试场景:

<button id="button1">Button</button>    

相同
$myvariable = "hello";
$$myvariable = "hello2";

适用于您的情况:

$hello = "hello2";

返回test1

查看相关的安全文章http://rgaucher.info/php-variable-variables-oh-my.html

答案 1 :(得分:2)

让我提出一种替代方法,大多数开发人员都同意这种方法比使用变量变量更好:

//array for the protein_feed's
    $protein_feed=array('low'=>'1','moderate'=>'2','high'=>'3'); 
//then to select one based on the value of $repeater
    echo $protein_feed[$repeater];

答案 2 :(得分:0)

我认为您正在寻找这样的事情:

<?php

// Example - though you should use objects, key -> values, 
// arrays instead in my opinion.

$low_protein_feed = "Low protein";
$moderate_protein_feed = "Lots of protein";
$high_protein_feed = "high grade protein";

$types = array("low", "moderate", "high");

foreach($types as $type) {

    echo ${$type . '_protein_feed'} . " \n";

}

输出:

$ php testme.php 
Low protein 
Lots of protein 
high grade protein 

但是,你应该使用这样的东西:

$types = array("low", "moderate", "high");
$proteins=array('low'=>'1','moderate'=>'2','high'=>'3'); 

foreach($types as $type) {
    echo $proteins[$type];
}

更高级的设计,您可以使用对象并声明所述对象的类型并使用标准类型进行项目。

此处进一步阅读动态变量名称以及PHP5 / 7之间的差异:

Using braces with dynamic variable names in PHP

http://www.dummies.com/programming/php/how-to-use-php-variable-variables/