create_function函数的用法?出问题了

create_function函数的用法?出问题了

我今天看到了这个create_function函数,在手册里看了看是英文,看了个差不多,咱英语不好,就又再网上搜索了一下这个函数的用法。不过此函数不是经常用,搜到的资料也不是很多,我在编代码时遇到了如下的问题,望各位帮忙,谢谢了!!!

    网上资料:create_function函数可以建立一个匿名的函数(函数名被PHP默认为lambda_1,lambda_2),样子比较古怪,但是形式比较奇特,要注意第二个参数内的语句要有“;”分隔。

代码1:

<?php
$newfunc = create_function('$a,$b', 'return $a + $b;');
echo $newfunc;
echo $newfunc(2,6);
?>

显示结果:(什么也没有)

改为代码2:
<?php
$newfunc = create_function('$a,$b', 'return $a + $b;');
echo $newfunc."</br>";
echo $newfunc(2,6);
?>
显示结果为:
(空白的一行)
8

改为代码3:
<?php
$newfunc = create_function('$a,$b', 'return $a + $b;');
echo "郁闷死了:";
echo $newfunc."</br>";
echo $newfunc(2,6);
?>
显示结果为:
郁闷死了:lambda_1
8

说明:上面代码3的结果我是重启动Apache后才显示为那样的,因为刷新一次,lambda_后面的数字就自动加1,我重启动后就清楚记录了。

我想问一下什么加了echo语句才显示后面的呢?
如代码2,相当于echo $newfunc;echo "</br>";就显示下面语句echo $newfunc(2,6);结果。
代码3,加了echo "郁闷死了:";才显示后面的呢。

另外,通过我改为代码3后没有重启Apache,显示结果为:
郁闷死了:lambda_53
8

因为我郁闷啊,所以在前面刷新了N次,才显示成”53“的。可见那个lambda_*还是起作用了,可怎么就是不显示呢。

我又改成了:
<?php
$newfunc = create_function('$a,$b', 'return $a + $b;');
echo $newfunc(2,6);
?>

就显示:
8
了。

哎!!乱七八糟的,搞不懂这个匿名函数。。。


[ 本帖最后由 honeyxiaoyi 于 2007-10-24 15:21 编辑 ]

我也没用过,帮顶,关注下