extract

(PHP 4, PHP 5, PHP 7, PHP 8)

extract — Імпортує змінні масиву до поточної таблиці символів

Опис

extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int

Імпортує змінні масиву до поточної таблиці символів.

Функція перевіряє кожен ключ масиву, щоб побачити, чи він містить допустиме ім'я змінної. Буде також перевірено збіги (колізії) з існуючими змінними у таблиці символів.

Увага

Не викликайте функції extract() з ненадійними даними на кшталт введення користувача (наприклад, з суперглобальними змінними $_GET $_FILES

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

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**Если в результате добавления префикса не будет получено допустимое имя переменной, она не будет импортирована в текущую таблицу символов.

Значення, що повертаються

Повертає кількість змінних, успішно імпортованих до таблиці символів.

Приклади

Приклад #1 Приклад використання функції extract()****

Функциюextract() також викликають для імпорту в таблицю символів змінних, що містяться в асоціативному масиві, що повертається функцією wddx_deserialize()

Loading...

Результат виконання наведеного прикладу:

blue, large, sphere, medium

Змінна $size не була перезаписана, тому що було встановлено прапор **EXTR_PREFIX_SAME**тому була створена змінна $wddx_size. Якби був визначений прапор **EXTR_SKIP**тоді змінна $wddx_size не було б створено. Прапор EXTR_OVERWRITE привів би до того, що змінною $size було б надано значення «medium», а прапор EXTR_PREFIX_ALL був би причиною того, що були б створені змінні $wddx_color, $wddx_size та $wddx_shape.

Примітки

Увага

Не варто викликати функцію extract() з ненадійними даними на кшталт введення користувача (наприклад, з суперглобальними змінними $_GET $_FILES). Коли це таки роблять, перевіряють, що значення параметра flags задано неперезаписуючим прапором на кшталт EXTR_SKIP, і пам'ятають, що змінні потрібно витягувати в тому самому порядку, який визначений у директиві variables_orderфайлаphp.ini

Дивіться також

  • compact() - Створює масив, що містить назви змінних та їх значення
  • list() - надає змінним значення схожим на масиви синтаксисом