PHP函数和数组

时间:2015-10-20 11:41:22

标签: php arrays function

<?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!字符串执行时,缺少的整数索引必须是什么?

这不适用于家庭作业/考试,而是来自我正在阅读的电子书,但我似乎无法理解究竟发生了什么。

给出的答案如下:

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中的函数可以动态调用,但我不明白它是如何在这个例子中完成的。如果有人能够一步一步地向我解释我们如何得到这个例子的答案,我将不胜感激。

1 个答案:

答案 0 :(得分:4)

$name = $s[?].$s[?].$s[?].$s[?].$s[?].$s[?];

填写正确的数字:

$name = $s[0].$s[4].$s[9].$s[9].$s[9].$s[9];

替换值后,这将减少为:

$name = 'my'.'function'.''.''.''.'';

这只是:

$name = 'myfunction';

现在:

$name(${$s[?]}, ${$s[?]});

填写数字:

$name(${$s[7]}, ${$s[8]});

替换值:

$name(${'a'}, ${'b'});

减少到:

$name($a, $b);

替换值:

$name(true, false);

由于$name'myfunction',因此会缩减为:

myfunction(true, false);