示例:
可以在PHP中实现这样的事情吗?
$Age = 43;
output_variable_name_and_value($Age);
/*
outputs:
"The requested variable name is Age and its current value is 43";
*/
//If possible, how would the line marked below with ? ? ? ? be?
function output__variable_name_and_value($input)
{
$var_name = get_name_somehow($input); // ? ? ? ?
echo "The requested variable name is {$var_name}
and its current value is {$input}";
}
答案 0 :(得分:1)
您可以使用此功能:
function var_name(&$iVar, &$aDefinedVars) {
foreach ($aDefinedVars as $k=>$v)
$aDefinedVars_0[$k] = $v;
$iVarSave = $iVar;
$iVar =!$iVar;
$aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));
$iVar = $iVarSave;
return $aDiffKeys[0];
}
这样称呼:
var_name($Age, get_defined_vars());
来源:http://mach13.com/how-to-get-a-variable-name-as-a-string-in-php
答案 1 :(得分:1)
这是不可能的,很容易。你必须使用$ GLOBALS;
function get_variable_name($var) {
foreach($GLOBALS as $k => $v) {
if ($v === $var) {
return $k;
}
}
return false;
}
唯一的缺点是,如果它们都具有相同的值,它可能会返回不同的变量名称。
或者这个,
function varName( $v ) {
$trace = debug_backtrace();
$vLine = file( __FILE__ );
$fLine = $vLine[ $trace[0]['line'] - 1 ];
preg_match( "#\\$(\w+)#", $fLine, $match );
print_r( $match );
}
答案 2 :(得分:1)
嗯..
您可以使用debug_backtrace找出调用output__variable_name_and_value
函数的内容。
然后你知道一个文件名和行号,这样你就可以尝试解析源文件,找出output__variable_name_and_value(
和)
之间的最新情况。
可能是一个坏主意!