PHP 动态命名和访问变量


PHP dynamically naming and accessing variables

$var1 = 'First Variable';
$var2 = 'Second Variable';
$var3 = 'Third Variable';
$number = 2;
$variable_to_get = 'var'.$number;

假设你想根据$number是什么回显出一个变量;例如,在这种情况下,$number是2,所以我们想要回显出$var 2。您将如何在不使用 switch 语句/ifs 的情况下执行此操作;只是直接命名变量并显示结果?

变量

echo ${'var'.$number};

不确定,也许是大括号? ${'var'.$number} 只是一个猜测

你最好使用数组。

$var = array(
   'first variable',
   'second variable',
   'third variable',
);

所以你会有这样的$var

array (
    [0] => 'first variable',
    [1] => 'second variable',
    [2] => 'third variable',
) 

然后获取值:

$variable_to_get = $var[$number-1];

$number应为 -1,因为数组从索引 0 开始。

另一种方法,您可以直接分配其索引。

$var[1] = 'first variable'
$var[2] = 'second variable'
$var[3] = 'third variable'

但是,如果您真的想要访问,请使用

$var1 = 'First Variable';
$var2 = 'Second Variable';
$var3 = 'Third Variable';
$number = 2;
$variable_to_get = 'var'.$number;

尝试使用评估

$var = array('First Variable','Second Variable','Third Variable');

$variable_to_get = 'var'.$var[0]; // returns First Variable
$variable_to_get = 'var'.$var[1]; // returns Second Variable

可以使用双精度 $$ 访问变量名称作为第二个变量中的字符串。第二个访问变量字符串,第一个访问名为字符串的变量:

$foo = 'bar';
$bar = 'foo';
echo $$foo; // echoes foo

在您的情况下的含义:

$var1 = 'First Variable';
$var2 = 'Second Variable';
$var3 = 'Third Variable';
$number = 2;
$variable_to_get = 'var'.$number; //will contain the string 'var2'
echo $$variable_to_get; //echoes 'Second Variable'