我只是把它們放在一起來幫助調試一些PHP腳本。正如你所看到的那樣,它很sl but,但我會改進一些。獲取傳遞給PHP函數的變量名稱?
我的調試函數有2個變量傳入,一個變量名和一個變量值。
是否有可能只是傳遞變量,並以某種方式獲取變量的名稱,而無需手動執行,就像我現在設置的那樣?
的功能
<?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>';
}
}
測試
$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);
?>
結果...
$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"
}
可能重複[如何在PHP中獲取變量名?(http://stackoverflow.com/questions/2384840/how-to-get-variable-name-in-php) – mario
不正是你問,但你可以使用像Xdebug這樣的東西來實現這一點,甚至更多。 http://xdebug.org/docs/execution_trace('collect_params'配置與你的問題最相關的行爲。) – grossvogel