获取传递变量名称作为字符串

时间:2015-10-22 20:05:33

标签: php

我正在尝试创建一个将数据添加到PHP会话数组的函数。我想动态创建数组项的Key作为变量名,并将所述键的值设置为该变量值。到目前为止我的示例代码:

$foo = 'bar';
addHookpointVar($foo);

function addHookpointVar($var) {
    $_SESSION['HOOKPOINT']['foo'] = $var;
}

PHP中是否有方法来获取变量的字符串表示形式,这样我的$ _SESSION [' HOOKPOINT'] [' VAR']将被设置为名称传入的变量?

我发现的所有方法都涉及循环遍历$ _GLOBALS

中的每个变量

2 个答案:

答案 0 :(得分:4)

这是一种方式:

$foo = 'bar';
addHookpointVar(compact('foo'));

function addHookpointVar($var) {
    list($key, $val) = each($var);
    $_SESSION['HOOKPOINT'][$key] = $val;
}

或者可能更清洁功能:

function addHookpointVar($var) {
    $_SESSION['HOOKPOINT'] = array_merge($_SESSION['HOOKPOINT'], $var);
}

但是,我可能只使用数组$hp['foo'] = 'bar';,然后您可以将$hp传递给函数。

答案 1 :(得分:-1)

我还在寻找将变量名称转换为字符串的解决方案。 在没有找到正确答案的情况下,我为这个问题创建了一个函数。

<?php
function func(&$variable) {
    $backupValue = $variable;
    $variable = uniqid();
    foreach ($GLOBALS as $key => $value) {
        if (!is_array($key) && $value == $variable) {
            $variable = $backupValue;
            return $key;
        }
    }
    throw new Exception('error number xx');
}

$test1 = "This is a test";
$test2 = 'This is a second test';
$test3 = 'This is a second test';

$array = [];

$array[func($test1)] = $test1;
$array[func($test2)] = $test2;
$array[func($test3)] = $test3;

var_dump($array);
?>

(也可提供on Github。)