PHP获取变量的变量名

今天在做网站框架的View部分的时候,要对于安的phpnew模板引擎进行改造,要实现如下三种变量注入方式:

$array1 = array(
        '0' => $subarray1(...),
        '1' => $subarray2(...)
);
$array2 = array(
        'title'=>'aaaaa',
        'content'=>'asdffsdas'
);
$this->display('index',$array1); //多维数组  用于直接循环输出
$this->display('index','name',$value);//普通变量赋值
$this->display('index',$array2); //支持数组解析

而phpnew只支持两种变量注入

$tpl->assign('tpl','footer');    //变量注入
$tpl->assign(array('abc'=>'str','str'=>'php'));   //数组解析

最终实现,是用到了获取变量名的方法

/**
 * 获取变量名
 *
 * @param $string
 * @return $string
 *
 * $test  = "helo";
 * $test2 = "helo";
 * getVarName($test2);
 */
function getVarName(&$src){
    //存储当前变量值
    $save = $src;
    //存储所有变量值
    $allvar = $GLOBALS;
    //在函数中不要直拉遍历$GLOBALS,会出现堆栈问题
    foreach($allvar  as $k=>$v){
        //变量值相同,可能不是相同变量,因多个变量的值可能相同
        if ($src == $v){
            //改变当前变量$src的值
            $src = 'change';
            //如果$GLOBALS[$k]也跟着改变,那就是同一个变量。
            if ($src == $GLOBALS[$k]){
                //echo "\$$k name is $k
"; //还原变量值 $src = $save; return $k; } } } }

参考http://blog.csdn.net/johnpanq/archive/2005/12/15/553328.aspx

2 Responses to “PHP获取变量的变量名”


Leave a Reply