function foo($arg){
function bar(){
//这里怎样才能访问到 $arg
}
}我发现可以这样在函数内部定义函数, 并认为很有用
但是,如何解决访问外层变量的问题? 如果是js这个问题就不存在了
function bar(){
//这里怎样才能访问到 $arg
}
}我发现可以这样在函数内部定义函数, 并认为很有用
但是,如何解决访问外层变量的问题? 如果是js这个问题就不存在了
$a=4;
function c(){
global $a;
$b=1;
echo $a*$b;
}
c();
在函数里面全局化变量$a就可以了 你也可以用“类”来实现这个效果……
class aa{
var $a;
function b(){
$b = 1;
echo intval($this -> a)*$b;
}
}
$obj = new aa();
$obj->a = 4;
$obj -> b();
利用debug_backtrace函数可以往外追溯函数调用的过程。
function a($arg,$arg2)
{
function b()
{
$b = debug_backtrace();
foreach($b as $k=>$v)
{
if($v['function'] !== __FUNCTION__) print_r($v['args']);
}
}
b();
}
a('hello world','hello china');
$val = $arg;
function bar($val){
}
}用参数传啊
function bar(){
global $arg;
echo $arg;
//这里怎样才能访问到 $arg
}
}
function foo($arg){
function bar(){
//这里怎样才能访问到 $arg
}
preg_replace_callback("/a/","A","bar",$text)
}
也就是做为 preg_replace_callback 的回调函数
其实我主要是用于这种情况
function foo($arg){
function bar(){
//这里怎样才能访问到 $arg
$n = func_get_args();
print_r($n);
} $text = 'abc';
preg_replace("/abc/ie","bar('\\0','".$arg."')",$text);
} foo('hello world!');
function format($text,$hs){
function bar($key,$ptn,$hs){
return $hs[$key];
}
return preg_replace("/\{\\$([^}]+?)(?::([^}]+?))?\}/ie","bar('$1','$2',\$hs)",$text);
}
echo format('I say {$text}',array('text'=>'hello world!'));
?>我写了个东西,比较爽