【发布时间】:2015-10-20 11:41:22
【问题描述】:
<?php
function myfunction($a, $b = true)
{
if($a && !$b) {
echo "Hello, World!\n";
}
}
$s = array(0 => "my",
1 => "call",
2 => '$function',
3 => ' ',
4 => "function",
5 => '$a',
6 => '$b',
7 => 'a',
8 => 'b',
9 => '');
$a = true;
$b = false;
/* Group A */
$name = $s[?].$s[?].$s[?].$s[?].$s[?].$s[?];
/* Group B */
$name(${$s[?]}, ${$s[?]});
?>
问题如下:每个 ?在上面的脚本中代表一个针对 $s 数组的整数索引。为了 显示 Hello, World! string 执行时,缺少的整数索引必须是什么?
这不是家庭作业/考试,它来自我正在阅读的电子书,但我似乎无法理解到底发生了什么。
给出的答案如下:
1: Group A: 4,3,0,4,9,9 Group B: 7,8
2: Group A: 1,3,0,4,9,9 Group B: 7,6
3: Group A: 1,3,2,3,0,4 Group B: 5,8
4: Group A: 0,4,9,9,9,9 Group B: 7,8
5: Group A: 4,3,0,4,9,9 Group B: 7,8
正确答案是 4,但我不明白代码中发生了什么示例。我了解到 PHP 中的函数可以动态调用,但我不明白在这个示例中它是如何完成的。如果有人能一步一步地向我解释我们如何得到这个例子的答案,我将不胜感激。
【问题讨论】:
-
既然您知道正确答案,您可以手动填写并评估代码/在您的脑海中。你试过吗?有什么不清楚的地方?
-
@u_mulder 因过于宽泛而投票结束
-
@deceze 我确实尝试过,但我不明白 A 组实际上是如何工作的。我知道 B 组只使用 $a 和 $b 及其值调用函数,打印 Hello World。
-
@user5204184 在 A 组中,您只需将函数名称连接在一起,然后使用包含函数名称的变量来调用函数。另见:3v4l.org/J3D7s