我想知道在包含文件中声明的所有变量。
示例代码是:
包含文件:
<?php
$a = 1;
$b = 2;
$c = 3;
$myArr = array(5,6,7);
?>
主要档案:
<?php
$first = get_defined_vars();
include_once("include_vars.php");
$second = get_defined_vars();
$diff = array_diff($second ,$first);
var_dump($diff);
$x = 12;
$y = 13;
?>
我尝试使用get_defined_vars()的差异似乎并不能提供准确的信息。 它给出了:
array(2) {
["b"]=>
int(2)
["c"]=>
int(3)
}
$ a和$ myArr似乎不见了。 我可以使用哪些其他方法?
答案 0 :(得分:2)
这样做真的不是一件好事,希望它只是用于调试。然后你应该找到get_defined_vars
返回的数组的键之间的差异,而不是它们的值之间的差异:
$diff = array_diff(array_keys($second),array_keys($first));
如果您不想包含文件,更复杂的方法是使用Tokenizer
:
$tokens = token_get_all(file_get_contents("include_vars.php"));
foreach($tokens as $token) {
if ($token[0] == T_VARIABLE)
echo $token[1] . ', ';
}
这会返回所有变量,甚至是非全局变量和那些在该脚本中未设置的变量(!)