Переменные php в массив - противоположность «extract» - PullRequest
8 голосов
/ 21 февраля 2012

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 ]

21 голосов
/ 21 февраля 2012

Вы можете использовать compact() для достижения этой цели.

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

Ссылка: http://php.net/manual/en/function.compact.php

4 голосов
/ 21 февраля 2012

как это

$preDefined = (get_defined_vars());
$var3 = 'test';
$test = 'another';
$datax = "1";
$newDefined = array_diff(get_defined_vars(), $preDefined);
print_r($newDefined);
1 голос
/ 21 февраля 2012

Вы должны быть на самом деле уверены, что хотите это сделать (это автоматически включает все в глобальную область), но вы можете использовать

$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;
}
1 голос
/ 21 февраля 2012
$array = get_defined_vars()

См. get_defined_vars ()

...