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

ffvjumwh  于 2023-04-19  发布在  PHP
关注(0)|答案(4)|浏览(135)

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

$low_protein_feed
$moderate_protein_feed
$high_protein_feed

我想根据$repeater的值调用其中一个变量。
我已经到了这一步...

echo "${$repeater}_protein_feed";

...例如,它输出moderate_protein_feed。但当我希望它回显$moderate_protein_feed变量的值时,它会回显为文本。
我觉得我离得不远了谢谢你的意见

olhwl3o2

olhwl3o21#

让我考虑另一种方法,大多数开发人员都认为它比使用可变变量更好:

//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];
bhmjp9jg

bhmjp9jg2#

虽然我反对这种编程的建议,有时它是方便的,能够有变量变量名.也就是说,一个变量名,可以设置和动态使用.一个正常的变量是设置一个语句,如:你会想要使用$$来设置变量为变量名。http://php.net/manual/en/language.variables.variable.php
测试场景:

$myvariable = "hello";
$$myvariable = "hello2";

$hello = "hello2";

对于您的案例:

$low_protein_feed = "test1";
$moderate_protein_feed = "test2";
$high_protein_feed = "test3";

$repeater = "low";
echo ${$repeater . "_protein_feed"};

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

sz81bmfz

sz81bmfz3#

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

<?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/

6qfn3psc

6qfn3psc4#

另一种方式:$GLOBALS[$side . $zi_char]

相关问题