Maison  >  Article  >  développement back-end  >  php获取一个变量的名字的方法,php获取变量方法_PHP教程

php获取一个变量的名字的方法,php获取变量方法_PHP教程

WBOY
WBOYoriginal
2016-07-13 10:19:291557parcourir

php获取一个变量的名字的方法,php获取变量方法

PHP中,所有的变量都存储在"符号表"的HastTable结构中,符号的作用域是与活动符号表相关联的。因此,同一时间,只有一个活动符号表。

我们要获取到当前活动符号表可以通过 get_defined_vars 方法来获取。

get_defined_vars // 返回所有已定义的变量所组成的数组

根据变量的值查找变量名字,但要注意,有可能有相同值的变量存在。

因此先将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名字,找到名字后,将临时变量的值重新赋值到原变量。

例子1:

<&#63;php 

$a = '100'; 

echo '$a name is:'.get_variable_name($a).' value:'.$a; // $a name is: a value: 100 

/** 
* @param String $var 要查找的变量 
* @param Array $scope 要搜寻的范围 
* @param String 变量名称 
*/ 
function get_variable_name(&$var, $scope=null){ 

$scope = $scope==null&#63; $GLOBALS : $scope; // 如果没有范围则在globals中找寻 

// 因有可能有相同值的变量,因此先将当前变量的值保存到一个临时变量中,然后再对原变量赋唯一值,以便查找出变量的名称,找到名字后,将临时变量的值重新赋值到原变量 
$tmp = $var; 

$var = 'tmp_value_'.mt_rand(); 
$name = array_search($var, $scope, true); // 根据值查找变量名称 

$var = $tmp; 
return $name; 
}
&#63;>

例子2:获取function里面定义的变量名字

<&#63;php 
function test(){ 
$a = '100'; 
echo '$a name is:'.get_variable_name($a); 
} 

test(); // $a name is: undefined 
//因为在function中定义的变量globals会找不到 

function test2(){ 
$a = '100'; 
echo '$a name is:'.get_variable_name($a, get_defined_vars()); 
} 

test2(); // $a name is: a 
// 将scope设定为 get_defined_vars() 可以找到 

&#63;>

PHP中怎获得变量名

function vname(&$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;
}

echo "\$变量名=".vname($变量名);
?>

输出结果: $变量名=变量名
 

php怎从一个文件中获取另一个文件的变量

1.楼上的方法 include("A.php") 或 require("A.php")
2.通过url后附带该变量,在B.php中用 $_GET['变量名'] 获得
3.玩狠点: 把这个变量设为session或cookie
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/874628.htmlTechArticlephp获取一个变量的名字的方法,php获取变量方法 PHP中,所有的变量都存储在"符号表"的HastTable结构中,符号的作用域是与活动符号表相关联...
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn