2012-09-28 48 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