【发布时间】:2013-06-10 04:44:18
【问题描述】:
这是 PHP 5.4 代码...
<?php
function abc($YesNo){return $YesNo["value"];}
$YesNo = array("value"=>"No","text"=>"No");
$x = array("active"=>function(){return abc($YesNo);});
echo $x['active']();
?>
注意:未定义变量:第 7 行的 YesNo
输出应为:Yes
如果我通过替换 $YesNo 直接将数组放入代码中
<?php
function abc($YesNo){return $YesNo["value"];}
$x = array("active"=>function(){return abc(array("value"=>"Yes","text"=>"Yes"));});
echo $x['active']();
?>
输出:是
这是正确的输出。现在第一个代码有什么问题。我需要它来实现可重用性
【问题讨论】:
-
$YesNo不在匿名函数的范围内。另外,这不是我所说的“可重用”代码。 -
那么如何处理这个变量
-
使用
function() { global $YesNo; return abc($YesNo); } -
我建议阅读这篇关于匿名函数的帖子:stackoverflow.com/a/4147510/870729
标签: php arrays variables indexing undefined