首先,我很抱歉我不相关的问题标题,因为我不知道如何更好地写它。
首先,我是一名PHP初学者。我正在解决一些PHP练习,我遇到了一个我不知道从哪里开始的问题:
function q3() {
// I am supposed to write stuff here and not change anything to get the question right.
}
function a3($admin = false) {
assertion_group("Question 3");
foreach ($GLOBALS as $k => $v) $$k = $v;
if ($admin) {
$file = q3("edsi.pem");
}
$key = @file_get_contents($file);
$key = substr($key, 0, 4);
assert($key == substr(file_get_contents(__FILE__), 0, 4));
return $key;
}
首先,我了解$GLOBALS
的作用,但为什么要将$$k
分配给$v
(因此$ k值为$ v值)? $GLOBALS
是否获取函数中的值?
如何设置$admin = true
?我相信q3()
,但我不知道如何......
让我感到困惑的另一件事 {strong> : $file = q3("edsi.pem")
。因为我的q3函数没有任何参数,并且我不应该添加一个参数,我该如何使用它?!
非常感谢大家的回答。我再次为这个非常含糊的问题道歉......
修改
在@mario的帮助下,为了更好地理解整个混乱,基本上我必须放在q3中的是:
if ($info == 'edsi.pem') {
$info = __FILE__;
return $info;
}
加上q3
(q3($info)
)的参数,并在标题中添加?admin=true
...
再次感谢!
答案 0 :(得分:1)
首先,我理解$ GLOBALS的作用,但为什么要将$$ k分配给$ v(所以将$ k值分配给$ v值)? $ GLOBALS是否在函数中获取值?
foreach … $$k = $v;
代码段的作用基本上是extract($GLOBALS);
这不是传递参数的非常有用的方法。使用全局变量只有在它们具有某种描述性名称时才有意义,并且如果它们不被误用作不同代码部分之间的状态标志。
不,并不是所有函数都没有全局变量。阅读variable scope。
如何设置$ admin = true?我相信通过q3(),但我不知道如何......
你在这里混淆了函数名称(正是因为它们不是很有用的函数名)。您可以在调用a3()
时传递$ admin参数:
a3(true);
最让我困惑的是:$ file = q3(“edsi.pem”)。因为我的q3函数没有任何参数,并且我不应该添加一个参数,我该如何使用它?!
在q3
中获取参数的唯一方法是func_get_arg()
。
再次真的,除非这是关于不如何编写代码或关于奇怪用例的教程的练习,否则你不应该再烦恼了。