我只是将它们放在一起以帮助调试一些 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)
如果您想知道名称,为什么不只传递变量名称的字符串常量,并使用全局数组来访问它(对于过程程序)
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)