我有一个数组存储对单个anonymous function的多个引用:
$fns = array();
//some code
$fn = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
for($x=12345; $x<67890; ++$x){
$fns[$x] = $fn;
}
如果我们把函数声明放在循环中怎么办? :
$fns = array();
//some code
for($x=12345; $x<67890; ++$x){
$fns[$x] = function(){
echo 'this is closure 12345... < 67890';
// etc etc..
};
}
引擎是否足够智能以识别只需要创建一个对象?
(问题针对HHVM和Zend Engine.)
解决方法:
如果在循环内创建函数,则创建300个单独的匿名函数对象. PHP并没有优化它,因为也许这就是你想要的.这比在循环之前创建函数一次效率低得多.
以下是创建两个独立对象的证据:http://3v4l.org/f3cdE
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。