获取传递给 PHP 函数的变量名称?

Jas*_*vis 2 php debugging

我只是将它们放在一起以帮助调试一些 PHP 脚本。正如你所看到的,它很草率,但我会进一步改进它。

我的调试函数有两个变量传入,一个变量名和一个变量值。

是否可以只传递变量并以某种方式获取变量的名称,而无需像我现在设置的那样手动执行?

功能

<?php
function debug($varname, $var)
{
    echo '<br>' . $varname;

    // $var is a STRING
    if (is_string($var)) {
        echo ' (string) = ' . $var . '<br>';

    // $var is an ARRAY
    } elseif (is_array($var)) {
        echo ' (array) = <pre>';
        print_r($var);
        echo '</pre><br>';

    // $var is an INT
    } elseif (is_int($var)) {
        echo ' (int) = ' . $var . '<br>';

    // $var is an OBJECT
    } elseif (is_object($var)) {
        echo ' (object) = <pre>';
        var_dump($var);
        echo '</pre><br>';
    }
}
Run Code Online (Sandbox Code Playgroud)

考试

$testString = 'just a test!';
$testArray = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
    );
$testInt = 1234567890;

$testObject = new stdClass;
$testObject->someVar1 = 'testing123';
$testObject->someVar2 = '321gnitset';

debug('$testString', $testString);
debug('$testArray', $testArray);
debug('$testInt', $testInt);
debug('$testObject', $testObject);
?>
Run Code Online (Sandbox Code Playgroud)

结果...

$testString (string) = just a test!

$testArray (array) = 
Array
(
    [key1] => value1
    [key2] => value2
    [key3] => value3
)



$testInt (int) = 1234567890

$testObject (object) = 
object(stdClass)#1 (2) {
  ["someVar1"]=>
  string(10) "testing123"
  ["someVar2"]=>
  string(10) "321gnitset"
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ead 5

如果您想知道名称,为什么不只传递变量名称的字符串常量,并使用全局数组来访问它(对于过程程序)

function foo($var) {
    echo $var; //name of the variable
    echo $GLOBALS[$$var]; //value of the variale
}

$bar = 'a string';
foo('bar');
Run Code Online (Sandbox Code Playgroud)