Справочник
WEB - языков

www.spravkaweb.ru Rambler's Top100
 Вы находитесь: Главная/PHP/Работа с массивами.Переменные и массивыРаспечатать 
Разделы
Новости
Сразу все
HTML
JavaScript
VBScript
CSS
Flash
Perl
PHP
MySQL
SSI
VRML
Дополнительно
Советы
Download
Форум
Гостевая
Ссылки
Написать мне
Поиск:
Рассылки
Subscribe.Ru:

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";
}

?>

</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, который может принимать следующие значения:
    EXTR_OVERWRITE
    - Если переменная с таким именем уже существует, то ее значение будет заменено (значение по умолчанию).
    EXTR_SKIP
    - Если переменная с таким именем уже существует, то ее значение не будет заменено.
    EXTR_PREFIX_SAME
    - Если переменная с таким именем уже существует, то к ее имени добавится префикс, определенный в параметре prefix.
    EXTR_PREFIX_ALL
    - Ко всем образуемым переменным будет добавлен префикс prefix.
    EXTR_PREFIX_INVALID
    - Только при неправильных или числовых индексах массива к имени переменной будет добавлен префикс prefix.
    EXTR_IF_EXISTS
    - Если переменная с таким именем уже существует, то ее значение будет переписано. Иначе ничего не сделает. Это может быть полезно, если вы задали список всех переменных, а затем хотите извлеч только те переменные, которые были определены, например, из $_REQUEST. Этот флаг был добавлен в PHP 4.2.0
    EXTR_PREFIX_IF_EXISTS
    - Создает переменные с префиксом, если такие переменные без префикса уже существовали. В любом другом случае ничего не создает. Этот флаг был добавлен в PHP 4.2.0
    EXTR_REFS
    - Переменные создаются как ссылки. Это означает, что созданные переменные все еще ссылаются на значения соответствующих элементов массива var_array. Вы можете применять этот флаг как в одиночку, так и совместно с другими флагами. Этот флаг был добавлен в PHP 4.3.0
Пример использования функции 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_size\n";
?>
Пример выведет:
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

По материалам книги Игоря Григина "PHP 4. Специальный справочник."
www.piter.com
Наверх / К оглавлению
 
Download
Скачать справочник по PHP
Что нового:
09.11.2004
Обновления в разделе CSS. Касаются они достаточно интересной, на мой взгляд, возможности браузера Internet Explorer: динамических фильтров, или преобразований. Этот раздел был полностью переписан, дополнен примерами использования и наглядными примерами.
Голосование:
Что Вам больше всего не нравится в справочнике:
Все нравится.
Ничего не нравится.
Мало примеров.
Неполное описание функций.
Не все функции описаны.
В справочнике мало языков.
А мне все равно.
Другое.
Счетчики:
Rambler's Top100
Сделать страницу стартовой Сделать страницу стартовой
Добавить страницу в избранное Добавить сайт в избранное
Сообщить об найденной ошибке Сообщить об ошибке