-1

$ 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
}
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);関数の最後にを追加してみませんか?

于 2013-01-21T00:27:08.750 に答える