我有一个名为$ repeater的变量,它可以是低,中或高。
我也有变量叫......
$low_protein_feed
$moderate_protein_feed
$high_protein_feed
我想根据$ repeater的值来调用其中一个变量。
我得到了这个......
echo "${$repeater}_protein_feed";
...例如输出moderate_protein_feed。但是,当我希望它回显$ moderate_protein_feed变量的值时,它会像文本一样呼应。
我觉得我并不遥远。 感谢您的任何输入
答案 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/