有没有办法在PHP中获取用户声明的变量?
获取定义变量即将(引用): 返回一个多维数组,其中包含所有已定义变量的列表,这些变量可以是环境变量、服务器变量或用户定义变量 对于我的调试任务,我只需要那些用户定义的。是否有php内置或补充功能 编辑: 好吧,我没有说清楚我到底想要什么,这里有一个小例子:有没有办法在PHP中获取用户声明的变量?,php,Php,获取定义变量即将(引用): 返回一个多维数组,其中包含所有已定义变量的列表,这些变量可以是环境变量、服务器变量或用户定义变量 对于我的调试任务,我只需要那些用户定义的。是否有php内置或补充功能 编辑: 好吧,我没有说清楚我到底想要什么,这里有一个小例子: <?php /* this script is included, and I don't have info about how many scripts are 'above' and 'bellow' this*/ //I'm
<?php
/*
this script is included, and I don't have info
about how many scripts are 'above' and 'bellow' this*/
//I'm at line 133
$user_defined_vars = get_user_defined_vars();
//$user_defined_vars should now be array of names of user-defined variables
//what is the definition of get_user_defined_vars()?
?>
是,您可以:
<?php
// Start
$a = count(get_defined_vars());
/* Your script goes here */
$b = 1;
// End
$c = get_defined_vars();
var_dump(array_slice($c, $a + 1));
似乎是解决您问题的一个很酷的方法:
<?php
// Var: String
$var_string = 'A string';
// Var: Integer
$var_int = 55;
// Var: Boolean
$var_boolean = (int)false;
/**
* GetUserDefinedVariables()
* Return all the user defined variables
* @param array $variables (Defined variables)
* @return array $user_variables
*/
function GetUserDefinedVariables($variables){;
if (!is_array($variables))
return false;
$user_variables = array();
foreach ($variables as $key => $value)
if (!@preg_match('@(^_|^GLOBALS)@', $key))
$user_variables[$key] = $value;
return $user_variables;
}
echo '<pre>'.print_r(
GetUserDefinedVariables(
get_defined_vars()
), true).'</pre>';
?>
稍微操纵一下数组怎么样
你的意思是用户定义的还是类定义中声明的?什么是用户定义的变量?您在自己的脚本中直接定义的脚本?PHP如何区分它和您需要/包含的某个外部文件中定义的变量?不,不是关于类变量,我需要全局范围中定义的变量user defined意味着我正在调试的应用程序声明了这些变量,那么
$GLOBALS
数组呢?这将隐藏所有以下划线开头和以GLOBALS开头的用户定义变量。会话变量和以$\u POST等形式发送的变量会发生什么情况?,尽管如此,我还是喜欢你的想法upvote@EyalAlsheich在$a
之前定义的所有内容(在本例中)都将被隐藏$_POST是在执行任何用户代码之前定义的。对于会话,这取决于您是否使用session_start()代码>或会话自动启动。这真的很好。最好的答案。这个答案最适合我的需要。谢谢,你少了一些。
<?php
// Var: String
$var_string = 'A string';
// Var: Integer
$var_int = 55;
// Var: Boolean
$var_boolean = (int)false;
/**
* GetUserDefinedVariables()
* Return all the user defined variables
* @param array $variables (Defined variables)
* @return array $user_variables
*/
function GetUserDefinedVariables($variables){;
if (!is_array($variables))
return false;
$user_variables = array();
foreach ($variables as $key => $value)
if (!@preg_match('@(^_|^GLOBALS)@', $key))
$user_variables[$key] = $value;
return $user_variables;
}
echo '<pre>'.print_r(
GetUserDefinedVariables(
get_defined_vars()
), true).'</pre>';
?>
$testVar = 'foo';
// list of keys to ignore (including the name of this variable)
$ignore = array('GLOBALS', '_FILES', '_COOKIE', '_POST', '_GET', '_SERVER', '_ENV', 'ignore');
// diff the ignore list as keys after merging any missing ones with the defined list
$vars = array_diff_key(get_defined_vars() + array_flip($ignore), array_flip($ignore));
// should be left with the user defined var(s) (in this case $testVar)
var_dump($vars);
// Result:
array(1) {
["testVar"]=>string(3) "foo"
}