如何在PHP中打印变量名?

时间:2010-02-10 12:50:46

标签: php variables

我正在为我的webby编写一个简单的脚本,如果发生错误500,它会向我发送一封电子邮件。我想转储所有可能的变量,会话,POST或其他什么,当错误发生时,所以我可以尽可能精确地分析问题。

这是我现在的代码:

function variable_name( &$var ) {
    $var_name = array_search( $var, $GLOBALS );
    return "{$var_name} = \"{$var}\"";
}

$bar = "whatever";

echo variable_name( $bar ); // bar = "whatever"

它正在检查$ GLOBALS,但是我需要检查和打印$ _POST,$ _SESSION,类字段等等。我google了一下,发现只是复杂的功能,这对于这么简单的任务来说似乎有点过头了。是否有任何简单的目的,或者我应该只为每个变量类型编写一个函数?

5 个答案:

答案 0 :(得分:5)

使用get_defined_vars()

  

此函数返回一个多维数组,其中包含所有已定义变量的列表,无论是环境,服务器还是用户定义的变量,都在调用get_defined_vars()的范围内。

这包括$GLOBALS(自PHP 5.0.0起),$_POST$_SESSION等。

答案 1 :(得分:1)

你试过get_defined_vars function吗? http://fr2.php.net/manual/fr/function.get-defined-vars.php

答案 2 :(得分:1)

Ondrej,尝试print_r函数。在手册中查找,有时它真的很有帮助。请注意,它还需要一个可选的第二个参数,当您想要将输出记录到文件或db而不是仅将其打印到屏幕时,该参数非常有用。

答案 3 :(得分:1)

答案 4 :(得分:0)

  

但我需要一些可以检查的东西   并打印$ _POST,$ _SESSION,   类字段等。

这个怎么样:

function variable_name(&$var) {
    $var_name = array_search( $var, $_POST); // or you can put $_GET, $_SEESION,etc 
    return "{$var_name} = \"{$var}\"";
}