php 中怎么取得变量名

WBOY
풀어 주다: 2016-06-13 11:52:51
원래의
1871명이 탐색했습니다.

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 />
로그인 후 복사

取变量名做什么?这是小白为题么?
------解决方案--------------------
忘了贴地址
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 />
로그인 후 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿