Как преобразовать переменные в массив и массив в переменные?

Преобразование переменных в массив. compact()

У нас имеются некоторые переменные, которые мы бы хотели преобразовать в единый массив. Для этого нужно прописать имя массива и после знака равенства использовать данную функцию compact(), в скобках передав имена переменных, которые должны быть занесены в массив.

array compact ( mixed $varname1 [, mixed $... ] )

Создает массив, содержащий переменные и их значения.

Для каждого из переданного параметров, функция compact() ищет переменную с указанным именем в текущей таблице символов и добавляет их в выводимый массив так, что имя переменной становится ключом, а содержимое переменной становится значением этого ключа.

Список параметров

compact() принимает неограниченное количество параметров. Любой из параметров может быть либо строкой, содержащей название переменной, либо массивом названий переменных. Массив может содержать вложенные массивы названий переменных; функция compact()обрабатывает их рекурсивно.

Возвращаемые значения

Возвращает массив со всеми переменными, добавленными в него.

Пример

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
)

Массив в данном случае получится ассоциативным: в качестве ключей будут выступать имена переменных, а значениями, соответственно, будут значения переменных.

Преобразование массива в переменные. extract()

Для преобразования массива в переменные мы будем использовать функцию extract().

int extract ( array &$array [, int $flags = EXTR_OVERWRITE [, string $prefix = NULL ]] )

Импортирует переменные из массива в текущую таблицу символов.

Каждый ключ проверяется на предмет корректного имени переменной. Также проверяются совпадения с существующими переменными в символьной таблице.

Список параметров

array - Ассоциативный массив. Эта функция рассматривает ключи массива в качестве имен переменных, а их значения - в качестве значений этих переменных. Для каждой пары ключ/значение будет создана переменная в текущей таблице символов, в соответствии с параметрами flagsи prefix.
Вы должны использовать ассоциативный массив, использование числовых массивов не приведёт ни к каким результатам, если вы не используете EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.

flags - Параметр flags определяет способ трактования неправильных/числовых ключей и коллизий. Он может принимать следующие значения:
EXTR_OVERWRITE - Если переменная с таким именем существует, она будет перезаписана.
EXTR_SKIP - Если переменная с таким именем существует, ее текущее значение не будет перезаписано.
EXTR_PREFIX_SAME - Если переменная с таким именем существует, к её имени будет добавлен префикс, определённый параметром prefix.
EXTR_PREFIX_ALL - Добавить префикс prefix ко всем именам переменных.
EXTR_PREFIX_INVALID - Добавить префикс prefix только к некорректным/числовым именам переменных.
EXTR_IF_EXISTS - Перезаписать только переменные, уже имеющиеся в текущей таблице символов, в противном случае не делать ничего. Данная возможность полезна для определения списка приемлемых переменных и для извлечения только тех переменных, которые вы уже определили из массивов типа $_REQUEST, например.
EXTR_PREFIX_IF_EXISTS - Создать только префикс-версии переменных, если версия данной переменной без префикса уже существует в текущей символьной таблице.
EXTR_REFS - Извлечь переменные как ссылки. Это означает, что значения таких переменных будут всё ещё ссылаться на значения массива array. Вы можете использовать этот флаг отдельно или комбинировать его с другими значениями flags с помощью побитового 'или'.
Если flagsне указан, он трактуется как EXTR_OVERWRITE.

prefix - Обратите внимание, что prefix имеет значение, только если flags установлен в EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID или EXTR_PREFIX_IF_EXISTS. Если в результате добавления префикса, не будет получено допустимое имя для переменной, она не будет импортирована в текущую символьную таблицу.

Возвращаемые значения

Возвращает количество переменных, успешно импортированных в текущую таблицу символов.

Преобразование массива в переменные. $$

Для преобразование массива в переменные можно использовать конструкцию $$- переменные переменных.

Пример

$expected=array('username','age','city','street');
foreach($expected as $key){
    ${$key} = empty($_POST[$key]) ? null : $_POST[$key];
}

Фигурные скобки могут также использоваться, чтобы четко разграничить имя свойства.

  1. PHP
  2. Примеры