#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
- 762 reads