【问题标题】:How to print the name of a variable and a array? [duplicate]如何打印变量和数组的名称? [复制]
【发布时间】:2012-09-20 16:47:25
【问题描述】:

可能重复:
How to get a variable name as a string in PHP?

我需要类似于下面的代码:

代码

<?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

所以,我需要编写一个函数,为我提供传递给它的变量或数组的名称。我该怎么做?

我会在另一个函数上使用这个函数来执行一些任务给我...

【问题讨论】:

  • Trevor,这个解决方案对我的问题不起作用。
  • 此链接仅适用于变量,不适用于数组。随着数组崩溃。
  • @GarouDan 请提供一个示例,您需要 echo name($array1)echo 'array1' 不会这样做。
  • 此链接与其他链接相同,并崩溃到数组。
  • 这不可能按照你的想法。确定已传递给函数的变量的名称就像通过检查已倒入的玻璃杯中的内容来确定瓶子标签上的文本。

标签: php arrays variables


【解决方案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;
}
?>

【讨论】:

    【解决方案2】:

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

    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; 
    } 
    

    【讨论】:

    • 请注意,在这种情况下,您将转储两个数组的内容并比较结果。
    • 一个很大的风险是,如果您有两个具有相同值的变量,您可能会返回错误的变量,因此准确性是一个真正的问题,但我认为这是与您要达到的目标一样接近。
    猜你喜欢
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多