Home > Backend Development > PHP Tutorial > php 中怎么取得变量名

php 中怎么取得变量名

WBOY
Release: 2016-06-13 11:52:51
Original
1915 people have browsed it

php 中如何取得变量名?

本帖最后由 u010200485 于 2014-03-11 12:27:23 编辑 在下php小白,请教两个问题:

1.怎样取得变量的名字?
例如:
$var_name = 'var_value';
Q: 怎样取得 ‘var_name’?

2.可能跟第一个问题类似,
例如:
function func_name($argument_name) {
    $code;
    Q:怎样在函数内取得 ‘parameter_name'?
}
$parameter_name = 'parameter_value';
func_name($parameter_name);

问题可能有点绕但是是我现在碰到的问题,希望可以得到解答,先谢过了。
------解决方案--------------------
<br />$var_name = 'var_value';<br />function get_variable_name(&$var, $scope = NULL) {<br />if (NULL == $scope) {<br />    $scope = $GLOBALS;<br />}<br /> <br />    $tmp = $var;<br />    $var = "tmp_exists_" . mt_rand();<br />    $name = array_search($var, $scope, TRUE);<br />    $var = $tmp;<br />    return $name;<br />}<br />echo get_variable_name($var_name);//var_name<br />
Copy after login

取变量名做什么?这是小白为题么?
------解决方案--------------------
忘了贴地址
http://stackoverflow.com/questions/255312/how-to-get-a-variable-name-as-a-string-in-php
------解决方案--------------------
先有鸡还是先有蛋的问题。

第一个问题 1楼 已经解答。

$var = 'tmp_value_'.mt_rand();
$name = array_search($var, $scope, true);

因为是根据值找已定义的变量,会存在相同变量值的情况。以上两句的作用就是解决这个问题的。
解决方法:
1.先将原来变量的值用一个临时变量保存
2.然后把变量值修改为唯一的值(就是不可能有重复的值),再search,这就会找到唯一的变量名。
3.把临时变量的值还原到原来变量

因为是用&$var,地址引用,因此修改变量值后,都可以找到

第二个问题,要做到的话,$argument_name只能用地址引用,例如这样就可以获取到 parameter_name
<br />function func_name(&$argument_name) {<br />    echo get_variable_name($argument_name);<br />}<br /><br />$parameter_name = 'parameter_value';<br />func_name($parameter_name);<br /><br />function get_variable_name(&$var, $scope=null){  <br />  <br />    $scope = $scope==null? $GLOBALS : $scope;<br />    $tmp = $var;  <br />      <br />    $var = 'tmp_value_'.mt_rand();  <br />    $name = array_search($var, $scope, true);<br />  <br />    $var = $tmp;  <br />    return $name;  <br />} <br /><br />
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template