在运行时检索PHP中的局部变量?

时间:2013-01-21 00:22:51

标签: php local-variables

如果我在$ 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
}

2 个答案:

答案 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);