PHP有一个函数提取,可以像这样转换数组:
$array = array(
'var1' => 1,
'var2' => 2
);
为:
$var1 = 1;
$var2 = 2;
现在,我需要相反,我的变量很少:
$var3 = 'test';
$test = 'another';
$datax = 1;
需要:
$array = array(
'var3' => 'test',
'test' => 'another',
'datax' => 1
);
PHP中有这样的东西吗?
答案 0 :(得分:20)
您可以使用compact()
来实现此目标。
$var3 = 'test';
$test = 'another';
$datax = 1;
$array = compact('var3', 'test', 'datax');
答案 1 :(得分:4)
$preDefined = (get_defined_vars());
$var3 = 'test';
$test = 'another';
$datax = "1";
$newDefined = array_diff(get_defined_vars(), $preDefined);
print_r($newDefined);
答案 2 :(得分:1)
$array = get_defined_vars()
答案 3 :(得分:1)
你必须真的确定你想要这样做(它包括全局范围内的东西)但你可以使用
$my_vars = get_defined_vars();
如果你想要它比那更具选择性,你可以看一下这样过滤它:
$my_vars = pack_vars(get_defined_vars())
function pack_vars ($defined_vars)
{
$packed = array();
$ignored = array('dont_use_this', 'ignored_var', 'ignore_this_too');
foreach ($defined_vars AS $key => $value)
{
if (!in_array($key, $ignored))
{
$packed[$key] = $value;
}
}
return $packed;
}