Php 如何在变量中插入变量

Php 如何在变量中插入变量,php,Php,我有php代码: $rand = rand(1,5); 我想定义一个名为rand函数的var,比如: $$rand // if $rand= 1 then the var will be $1 然后呢 switch($rand){ case(1): $$rand = 'How many legs dog has ?'; $ans= '4'; } 该代码用于定义安全问题。 希望有人知道我的想法。我该怎么做呢?${$rand}是正确的方法。但是,请注意,变量名不能以数字开头 引用ph

我有php代码:

$rand = rand(1,5);
我想定义一个名为rand函数的var,比如:

$$rand // if $rand= 1 then the var will be $1
然后呢

switch($rand){
case(1):
$$rand = 'How many legs dog has ?';
$ans= '4';      }
该代码用于定义安全问题。
希望有人知道我的想法。我该怎么做呢?

${$rand}是正确的方法。但是,请注意,变量名不能以数字开头

引用php:

变量名遵循与PHP中其他标签相同的规则。有效的变量名以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它可以这样表示:“[a-zA-Z\ux7F-\xff][a-zA-Z0-9\ux7F-\xff]*”


${$rand}是正确的方法。但是,请注意,变量名不能以数字开头

引用php:

变量名遵循与PHP中其他标签相同的规则。有效的变量名以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它可以这样表示:“[a-zA-Z\ux7F-\xff][a-zA-Z0-9\ux7F-\xff]*”


有时可以方便地使用变量名。也就是说,可以动态设置和使用的变量名。使用以下语句设置正常变量:

<?php
$a = 'hello';
?>

变量接受变量的值并将其视为变量的名称。在上面的示例中,hello可以使用两个美元符号作为变量的名称。i、 e

<?php
$$a = 'world';
?>

此时,在PHP符号树中定义并存储了两个变量:$a,内容为“hello”,$hello,内容为“world”。因此,本声明:

<?php
echo "$a ${$a}";
?>

产生与以下内容完全相同的输出:

<?php
echo "$a $hello";
?>

i、 他们都生产:你好,世界

为了在数组中使用变量,必须解决歧义问题。也就是说,如果您编写$$a[1],那么解析器需要知道您是想使用$a[1]作为变量,还是想使用$$a作为变量,然后使用该变量的[1]索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]


还可以使用变量属性名访问类属性。变量属性名称将在进行调用的范围内解析。例如,如果您有一个表达式,例如$foo->$bar,那么本地范围将被检查$bar,其值将被用作$foo属性的名称。如果$bar是数组访问,这也是正确的。

有时可以方便地使用变量名。也就是说,可以动态设置和使用的变量名。使用以下语句设置正常变量:

<?php
$a = 'hello';
?>
// Sanitize the arrays
$questions = array();
$answers = array();

// Build some questions and assign to the questions array
$questions[0] = 'How many legs does a dog have?';
$questions[1] = 'How many eyes does a human have?';
$questions[2] = 'How many legs does a spider have?';


// Add the answers, making sure the array index is the same as the questions array
$answers[0] = 4;
$answers[1] = 2;
$answers[2] = 8;


// Select a question to use
$questionId = rand(0, count($questions));


// Output the question and answer
echo 'questions: ' . $questions[$questionId];
echo 'answer: ' . $answers[$questionId];

变量接受变量的值并将其视为变量的名称。在上面的示例中,hello可以使用两个美元符号作为变量的名称。i、 e

<?php
$$a = 'world';
?>

此时,在PHP符号树中定义并存储了两个变量:$a,内容为“hello”,$hello,内容为“world”。因此,本声明:

<?php
echo "$a ${$a}";
?>

产生与以下内容完全相同的输出:

<?php
echo "$a $hello";
?>

i、 他们都生产:你好,世界

为了在数组中使用变量,必须解决歧义问题。也就是说,如果您编写$$a[1],那么解析器需要知道您是想使用$a[1]作为变量,还是想使用$$a作为变量,然后使用该变量的[1]索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]

还可以使用变量属性名访问类属性。变量属性名称将在进行调用的范围内解析。例如,如果您有一个表达式,例如$foo->$bar,那么本地范围将被检查$bar,其值将被用作$foo属性的名称。如果$bar是数组访问,则也是如此

// Sanitize the arrays
$questions = array();
$answers = array();

// Build some questions and assign to the questions array
$questions[0] = 'How many legs does a dog have?';
$questions[1] = 'How many eyes does a human have?';
$questions[2] = 'How many legs does a spider have?';


// Add the answers, making sure the array index is the same as the questions array
$answers[0] = 4;
$answers[1] = 2;
$answers[2] = 8;


// Select a question to use
$questionId = rand(0, count($questions));


// Output the question and answer
echo 'questions: ' . $questions[$questionId];
echo 'answer: ' . $answers[$questionId];
PHP中的变量不能以数字开头


PHP中的变量不能以数字开头。

请尝试${$rand}-为什么要使用它?
$$rand
在PHP中是有效的语法;但是,
$1
不是合法的变量名。试试
$rand=“r”.rand(1,5)$$rand
。不要使用数组而不是使用数组${$rand}-为什么要使用它?
$$rand
在PHP中是有效的语法;但是,
$1
不是合法的变量名。试试
$rand=“r”.rand(1,5)$$rand
。不要使用数组,但是,
$name=1$$名称='var';echo${1}
非常好。@从技术上讲,PLB不是,因为$$name的计算结果仍然是$1,这是无效的,解决方法是
$name='q1'$$名称='var';echo$name哇。脑力崩溃。是的,我刚刚测试了这个,当我看到它工作时,我很惊讶。不过,我会避免使用这种方法,除非你要进行极端的混淆。事实证明我错了!我同意@mkumpan的说法,虽然它有效,但它可能是一种糟糕的做法!毕竟,变量名的命名应该与它所持有的数据相关:)好吧,变量名在某些情况下可能是合理的,但在我看来,使用这种方法来规避php语法的预期(和记录)行为绝对是不好的做法$$名称='var';echo${1}
非常好。@从技术上讲,PLB不是,因为$$name的计算结果仍然是$1,这是无效的,解决方法是
$name='q1'$$名称='var';echo$name哇。脑力崩溃。是的,我刚刚测试了这个,当我看到它工作时,我很惊讶。不过,我会避免使用这种方法,除非你要进行极端的混淆。事实证明我错了!我同意@mkumpan的说法,虽然它有效,但它可能是一种糟糕的做法!毕竟,变量名的命名应该与它所持有的数据相关:)嗯,变量名在某些情况下可能是合理的,但是使用