我在我的应用程序中输入了以下代码:
public function generate_function_list($generated){
foreach($generated as $method){
call_user_func($method);
}
}
public function echotest($text){
echo '<p>' . $text . '</p>';
}
我按照这样执行:
$arrayx = array(
FormGenerator::echotest("test container 1"),
FormGenerator::echotest("test container 2"),
FormGenerator::echotest("test container 3"),
FormGenerator::echotest("test container 4")
);
$nez->generate_function_list($arrayx);
这是输出:
<p>testcontainer 1</p><p>testcontainer 2</p><p>testcontainer 3</p><p>testcontainer4</p>
是的,正如您可以看到输出正确,它正确执行函数及其参数,但不幸的是我得到以下内容:
警告:在第2行的C:\ AppServ \ www \ test \ testclassgenerator.php中为foreach()提供的参数无效
我一直在检查generate_function_list函数中的foreach,我发现我无法读取里面设置的函数,所以它有点奇怪。
我的意图是使用简单的数组调用方法,并给出及时的参数。
谢谢!
答案 0 :(得分:0)
您的阵列构建不正确的原因示例:
function foo() {
echo 'foo'; // immediate output of 'foo', no return value
}
function bar() {
return 'bar'; // no output, return 'bar' to the calling context
}
$foo = foo();
$bar = bar();
var_dump($foo); // outputs: NULL
var_dump($bar); // outputs: string(3) "bar"
$array = array(
foo(),
bar()
);
var_dump($array);
输出:
array(2) {
[0]=> NULL
[1]=> string(3) "bar"
}
您的echotest
执行输出。它没有return
电话。当执行返回到调用上下文时,PHP没有return
的函数被赋予NULL
值。
因此,您的数组,正如您在转储输出中所述,是一个NULL数组,一个用于在数组内进行的每个echotest()调用。然后,您将该数组传递给generate_function_list()
,它将简单地遍历所有这些空值,并执行一系列call_user_func(NULL)
次调用,这是毫无意义的。