Книга: Справочник по PHP

Переменные и массивы

Переменные и массивы

list

Заносит элементы массива в переменные.

Синтаксис:

void list ( mixed ...)

Наподобие array(), функция list() не совсем функция, а языковая конструкция. Она используется для формирования списка переменных.

Замечание:list() работает только с цифровыми индексами массива и принимает ключи элементов начиная с 0.

Пример использования функции list():

<?php
$info = array("coffee", "brown", "caffeine");
// Выведем все переменные
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.n";
// Выведем первый и последний
list($drink, , $power) = $info;
echo "$drink has $power.n";
// Выведем только третий
list( , , $power) = $info;
echo "I need $power!n";

?>

Пример использования функции list():

<table>
<tr>
<th>Employee name</th>
<th>Salary</th>
</tr>
<?php
$result = mysql_query("SELECT id, name, salary FROM employees", $conn);
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
echo " <tr>n" .
" <td><a href="info.php?id=$id">$name</a></td>n" .
" <td>$salary</td>n" .
" </tr>n";
}
?&gt;
</table>

Пример использования функции list(): Индексы

<?php
$info = array("coffee", "brown", "caffeine");
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);

?>

array(3) { [2]=> string(8) "caffeine" [1]=> string(5) "brown" [0]=> string(6) "coffee"}

Функция поддерживается PHP 3, PHP 4, PHP 5

compact

Упаковывает в массив переменные из текущего контекста.

Синтаксис:

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

Функция compact() упаковывает в массив переменные из текущего контекста (глобального или контекста функции), заданные своими именами в varname1, $varname2 и т.д. При этом в массиве образуются пары с ключами, равными содержимому varnameN, и значениями соответствующих переменных.

Число аргументов может быть неопределенное.

Если в аргументе указано имя несуществующей переменной, он пропускается. Действие этой функции противоположно функции extract().

Пример использования функции compact():

<?php
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH"";
$location_vars = array("city", "state");
$result = compact("event", "nothing_here", $location_vars);

?>

В результате выполнения кода переменная $result имеет значение:

Array( [event] => SIGGRAPH [city] => San Francisco [state] => CA)

Почему же тогда параметры функции обозначены как mixed? Дело в том, что они могут быть не только строками, но и списками строк. В этом случае функция последнего перебирает все элементы этого списка, и упаковывает те переменные из текущего контекста, имена которых она встретила. Более того - эти списки могут, в свою очередь, также содержать списки строк, и т.д. Правда, последнее используется достаточно редко.

Пример использования функции compact():

<?php
$a="Test";
$b="Text";
$c="CCC";
$d="DDD";
$List=array("b",array("c","d"));
$A=compact("a",$List);

?>

Теперь:

// теперь $A===array("a"=>"Test", "b"=>"Text",
"c"=>"CCC", "d"=>"DDD")

Функция поддерживается PHP 4, PHP 5

extract

Импорт элементов массива в переменные.

Синтаксис:

int extract (array var_array [, int extract_type [, string prefix]])

Функция extract() используется для импортирования значений массива в строку. Эта функция берет ассоциативный массив var_array, использую ключ элемента как имя переменной, а значение элемента как значение полученной переменной. Для создания переменных из пары ключ = значение можно также использовать необязательные параметры extract_type и prefix.

Замечание: начиная с PHP версии 4.0.5 эта функция возвращала количество извлеченных переменных.

Функция extract() проверяет, действительно ли каждый ключ массива может быть названием переменной. Она также проверяет на наличие одинаковых названий получаемых переменных. В случае, если обнаруживаются недействительные или числовые ключи, поведение функции предопределяет параметр extract_type, который может принимать следующие значения:

Пример использования функции extract():

<?php
/* Предположим, что $var_array массив,
полученный при помощи функции wddx_deserialize */
$size = "large";
$var_array = array("color" => "blue",
"size" => ""medium",
"shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_sizen";

?>

Пример выведет:

blue, large, sphere, medium

Здесь переменная $size не была переписана, т.к. мы указали параметр EXTR_PREFIX_SAME. Если указать EXTR_SKIP, тогда переменная $wddx_size даже не была бы создана. Если указать EXTR_OVERWRITE, то переменная $size имела бы значение "medium". Если EXTR_PREFIX_ALL - то в результате были бы созданы переменные $wddx_color, $wddx_size, и $wddx_shape.

Лучше всего использовать ассоциативные массивы. Массивы с цифровыми ключами не могут быть использованы в этой функции, если установлены флаги EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.

Функция поддерживается PHP 3 = 3.0.7, PHP 4, PHP 5

Оглавление книги


Генерация: 0.660. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз