获取字符串中变量的名称


Get the name of a variable in a string

Hi我想创建一个函数,在其中我可以传递一个变量,并将变量的名称及其值输出为字符串。类似这样的东西:

$firstname = 'John';
$lastname = 'Doe';
echo my_function($firstname); // outputs: "Var name: firstname , has: John"
echo my_function($lastname);  // outputs:  "Var name: lastname , has: Doe"

看看get_defined_vars()

您可以var_dump它将显示您定义的所有变量。然后,您可以循环并转储每个值。

http://php.net/get_defined_vars

这次我能想到的唯一最简单的方法是使用$GLOBAL

<?php
function my_function($val) {
  foreach($GLOBALS as $name => $value) {
      if ($value == $val) {
          return "Var name: ".$name." , has: ".$val."<br>";
      }
  }
}
$first = 'John';
$firstname = 'John';
$lastname = 'Doe';
echo my_function($firstname); // outputs: "Var name: firstname , has: John"
echo my_function($lastname);

输出:

Var name: firstname_my , has: John
Var name: lastname_my , has: Doe

假设有两个变量具有相同的

$first = 'John';
$firstname = 'John';

你可以修改你的代码来区分像这个

function my_function($val) {
   foreach($GLOBALS as $name => $value) {
       if ($value == $val && substr($name,-3) == "_my") {
          return "Var name: ".$name." , has: ".$val."<br>";
       }
   }
}
$first = 'John';
$firstname_my = 'John';
$lastname_my = 'Doe';
echo my_function($firstname_my); // outputs: "Var name: firstname , has: John"
echo my_function($lastname_my);