-1

如果我print_r在 $GLOBALS 中这样做,我将拥有所有全局变量。

但我需要这样的东西:

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
}
4

2 回答 2

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
)
于 2013-01-21T00:52:02.403 回答
0

在函数之外,未定义变量。除了静态变量,那些是函数私有的。

为什么不直接var_dump($a,$b,$i);在函数末尾添加 a 呢?

于 2013-01-21T00:27:08.750 回答