我正在尝试创建一个将数据添加到PHP会话数组的函数。我想动态创建数组项的Key作为变量名,并将所述键的值设置为该变量值。到目前为止我的示例代码:
$foo = 'bar';
addHookpointVar($foo);
function addHookpointVar($var) {
$_SESSION['HOOKPOINT']['foo'] = $var;
}
PHP中是否有方法来获取变量的字符串表示形式,这样我的$ _SESSION [' HOOKPOINT'] [' VAR']将被设置为名称传入的变量?
我发现的所有方法都涉及循环遍历$ _GLOBALS
中的每个变量答案 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。)