2012-09-28 46 views
1

可能重复:
How to get a variable name as a string in PHP?如何打印变量和数组的名称?

我needding类似下面的代码的东西:

代码

<?php 

$var1='my var 1'; 

$array1['1']='first position of my array 1'; 
$array1['2']='second position of my array 1'; 

echo name($var1); 

echo "<br>"; 

echo name($array1); 

function name($parameter){ 
...?... 
} 
?> 

屏幕返回

var1 
array1 

所以,我需要编写一个函数,给我的名称的变量或者说我传递给它一个数组的。我该如何执行此操作?

我会用另一个函数这个函数来执行某些任务,我...

+0

特雷弗,该解决方案不工作我的问题。 – GarouDan

+0

此链接仅适用于变量,不适用于数组。阵列崩溃。 – GarouDan

+0

@GarouDan请提供一个例子,您需要'echo name($ array1)'和'echo'array1''不会。 – lanzz

回答

1

正如@bfavaretto说,

这个工作得很好对我说:

<?php 

$var1='my var 1'; 

$array1['1']='first position of my array 1'; 
$array1['2']='second position of my array 1'; 

echo name($var1); 

echo "<br>"; 

echo name($array1); 

function name(&$var, $scope=false, $prefix='unique', $suffix='value'){ 
    if($scope) $vals = $scope; 
    else  $vals = $GLOBALS; 
    $old = $var; 
    $var = $new = $prefix.rand().$suffix; 
    $vname = FALSE; 
    foreach($vals as $key => $val) { 
     if($val === $new) $vname = $key; 
    } 
    $var = $old; 
    return $vname; 
} 
?> 
0

尝试以下列方式(未经测试)修改函数

function print_var_name($var) { 
    $left=var_export($var, true); 
    foreach($GLOBALS as $var_name => $value) { 
     $right=var_export($value, true); 
     if ($left === $right) { 
      return $var_name; 
     } 
    } 
    return false; 
} 
+0

请注意,您在这种情况下倾销两个数组的内容并比较结果。 – Dave

+0

这是一个很大的风险,如果你有两个变量具有相同的值,你可能会返回错误的,所以准确性是一个*真实*问题,但我认为这是一样接近你将要达到你正在尝试。 – Dave