如果我在$ GLOBALS中print_r
,我有所有全局变量。
但我需要这样的事情:
function foo() {
$a = 1;
$b = 2;
for($i = 0; $i < 10; $i++);
}
print_r(find_variables_in_function('foo')); // results: array(a => 1, b => 2, i => 10);
我正在尝试在code.google.com/p/webgrind/中实现一个新功能 - 因为这个工具在运行时给我函数,所以我可以在所有函数末尾的变量大小生成一个图表。
$x = 2;
$y = 3;
function foo() {
$a = 1;
$b = 2;
for ($i = 0; $i < 10; $i++)
;
print_r(get_defined_vars()); // has no side effects - print null string
}
答案 0 :(得分:3)
get_defined_vars()返回在调用它的作用域中定义的所有变量的数组。如果你从函数中调用它,你将得到该函数中定义的变量,这里是文档:
http://php.net/manual/en/function.get-defined-vars.php
例如:
<?php
function foo() {
$a = 'first';
$b = 'second';
$c = get_defined_vars();
print "vars=";print_r($c);print"\n";
}
foo();
?>
这里打印什么
$ php testgdvars.php
vars=Array
(
[a] => first
[b] => second
)
答案 1 :(得分:0)
在函数外部,未定义变量。除静态变量外,它们对函数是私有的。
为什么不在功能的末尾添加var_dump($a,$b,$i);
?