我有 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'; }
该代码用于定义安全问题。希望有人明白我的想法。我该怎么做 ?
我有 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'; }
该代码用于定义安全问题。希望有人明白我的想法。我该怎么做 ?
有时能够有变量变量名很方便。即可以动态设置和使用的变量名。使用如下语句设置普通变量:
<?php
$a = 'hello';
?>
变量变量获取变量的值并将其视为变量的名称。在上面的示例中,hello,可以通过使用两个美元符号用作变量的名称。IE
<?php
$$a = 'world';
?>
此时已经定义了两个变量并将其存储在 PHP 符号树中:具有内容“hello”的 $a 和具有内容“world”的 $hello。因此,此声明:
<?php
echo "$a ${$a}";
?>
产生与以下完全相同的输出:
<?php
echo "$a $hello";
?>
即他们都产生:你好世界。
为了在数组中使用可变变量,您必须解决歧义问题。也就是说,如果您编写 $$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 中的变量不能以数字开头。
${$rand} 是正确的方法。但是请注意,您的变量名称不能以数字开头。
引用php手册:
变量名称遵循与 PHP 中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它会这样表达:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'