#3.12 php Извлечение переменных из массивов
Primary tabs
Если требуется для массива, проиндексированного строками, присвоить значения элементов переменным, одноименным с соответствующими индексами, то на помощь приходит функция extract()
. Например, имеется следующий массив:
$fruits["good"] = "яблоко"; $fruits["better"] = "груша"; $fruits["best"] = "персик";
После вызова функции extract()
будут созданы переменные $good
, $better
и т.д., и им будут присвоены соответствующие значения из массива:
extract($fruits);
Это легко наблюдать в примере ниже.
Пример. Извлечение переменных из массива
<HTML> <HEAD> <TITLE>Извлечение переменных из массива</TITLE> </HEAD> <BODY> <H1>Извлечение переменных из массива</H1> <?php $fruits["good"] = "яблоко"; $fruits["better"] = "груша"; $fruits["best"] = "персик"; extract($fruits); echo "\$good = $good<BR>"; echo "\$better = $better<BR>"; echo "\$best = $best<BR>"; ?> </BODY> </HTML>
После выполнения этого примера переменной $good
будет присвоено значение "яблоко", переменной $better
— значение "груша" ит.д.(см. рис. 1).
Замечание
В РНР индексом массива может быть произвольная строка. Но для успешной работы функции extract()
требуется, чтобы индексами массива были строки, которые являются корректными названиями переменных в языке. Например, использовать русские буквы в индексах массива в данном случае не удастся.
Для присвоения переменным значений элементов массива может также использоваться функция list()
. Ниже приведен пример использования этой функции:
<?php $vegetables[0] = "картошка"; $vegetables[1] = "морковка"; $vegetables[2] = "свекла"; list($first, $second) = $vegetables; echo $first, "<BR>"; echo $second; ?>
В результате выполнения этого примера будут выведены строки
картошка морковка
А что делать, если требуется выполнить обратную операцию и сформировать массив на основе списка переменных? Для этого предназначена функция compact()
. В качестве аргументов она принимает имена переменных или массивы имен переменных. Значения переменных с указанными именами становятся очередными элементами массива.
<?php $firstname = "Сергей"; $lastname = "Банников"; $role = "Редактор"; $subarray = array ("firstname", "lastname"); $resultarray = compact($subarray, "role"); print_r($resultarray); ?>
В результате выполнения этого примера будет сформирован следующий массив:
Array ( [flrstname] => Сергей [lastname] => Банников [role] => Редактор )
- Log in to post comments
- 237 reads