php变量到数组 - 与“extract”相反

时间:2012-02-21 14:46:51

标签: php arrays extract

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中有这样的东西吗?

4 个答案:

答案 0 :(得分:20)

您可以使用compact()来实现此目标。

$var3 = 'test';
$test = 'another';
$datax = 1;
$array = compact('var3', 'test', 'datax');

参考:http://php.net/manual/en/function.compact.php

答案 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()

请参阅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;
}