- Добавление и удаление элементов
Печать: Шрифт: Абв Абв Абв
danilov 27 Февраля 2006 в 16:05:48
Добавление и удаление элементов

К счастью, в РНР при создании массива не нужно указывать максимальное количество элементов. Это увеличивает свободу действий при операциях с массивами, поскольку вам не приходится беспокоиться о случайном выходе за границы массива, если количество элементов превысит ожидаемый порог. В РНР существует несколько функций для увеличения размеров массива. Некоторые из них были созданы для удобства программистов, привыкших работать с различными типами очередей и стеков (FIFO, FILO и т. д.), что отражается в названиях функций (push, pop, shift и unshift). Но даже если вы не знаете, что такое «очередь» или «стек», не огорчайтесь — в этих функциях нет ничего сложного.

Очередью (queue) называется структура данных, из которой элементы извлекаются в порядке поступления. Стеком (stack) называется структура данных, из которой элементы извлекаются в порядке, обратном порядку их поступления.

array_push()

Функция array_push( ) присоединяет (то есть дописывает в конец массива) один или несколько новых элементов. Синтаксис функции array_push( ):

int array_push(array массив, mixed элемент [, ...])


Длина массива возрастает прямо пропорционально количеству его элементов. Это продемонстрировано в следующем примере:

<?
$languages
= array("Spanish", "English", "French");
array_push($languages, "Russian", "German", "Gaelic");
// $languages = array("Spanish", "English", "French",
// "Russian", "German", "Gaelic")
?>


У функции array_push( ), как и у многих стандартных функций РНР, существует «двойник» — функция аrrау_рор( ), предназначенная для извлечения элементов из массива. Главное различие между этими функциями заключается в том, что array_push( ) может добавлять несколько элементов одновременно, а аrrау_рор( ) удаляет элементы только по одному.

аrrау_рор()

Результат работы функции аrrау_рор( ) прямо противоположен array_push( ) — эта функция извлекает (то есть удаляет) последний элемент из массива. Извлеченный элемент возвращается функцией. Синтаксис функции аrrау_рор( ):

аrrау_рор(аrrау массив)


При каждом выполнении аrrау_рор( ) размер массива уменьшается на 1. Рассмотрим пример:

<?
$languages
= array("Spanish", "English", "French",
"Russian", "German", "Gaelic");
$a_language = array_pop($languages): // $a_language = "Gaelic"
$a_language = array_pop($languages): // $a_language = "German"
// $languages = array ("Spanish", "English", "French", "Russian");
?>


Функции array_push( ), и array_pop( ) удобны тем, что с их помощью можно выполнять операции с элементами и управлять размером массива, не беспокоясь о неинициализированных или пустых элементах. Такое решение работает намного эффективнее, чем любые попытки управления этими факторами со стороны программиста.

array_shift()

Функция array_shift( ) аналогична аrrау_рор( ) с одним отличием: элемент удаляется из начала (левого края) массива. Все остальные элементы массива сдвигаются на одну позицию к началу массива. У функции array_shift( ) такой же синтаксис, как и у аггау_рор( ):

array_shift(array массив)


При работе с функцией array_shift( ) необходимо помнить, что элементы удаляются из начала массива, как показывает следующий пример:

<?
$languages
= array("Spanish", "English", "French", "Russian");
$a_language = array_shift($languages); // $a_language = "Spanish";
// $languages = array("English", "French", "Russian");
?>


array_unshift()

Функция array_unshift( ) дополняет array_shift( ) — новый элемент вставляется в начало массива, а остальные элементы сдвигаются на одну позицию вправо. Синтаксис команды array_unshift( ):

1nt array_unshift(array массив, mixed переменная1 [....переменная2])


При одном вызове функции можно добавить как один, так и несколько элементов, при этом размер массива возрастает пропорционально количеству добавленных элементов. Пример добавления нескольких элементов:

<?
$languages
= array("French", "Italian", "Spanish");
array_unshift($languages, "Russian", "Swahili", "Chinese");
// $languages = array("Russian", "Swahili", "Chinese",
// "French", "Italian", "Spanish");
?>


array_pad()

Функция array_pad( ) позволяет быстро увеличить массив до желаемого размера посредством его дополнения стандартными элементами. Синтаксис функции array_pad( ):

array arrap_pad(array массив, int размер, mixed значение);


Параметр размер определяет новую длину массива. Параметр значение задает стандартное значение, присваиваемое элементам во всех новых позициях массива. При использовании array_pad( ) необходимо учитывать некоторые обстоятельства:

  • Если размер положителен, массив дополняется справа, а если отрицателен — слева.


  • Если абсолютное значение параметра размер меньше либо равно длине массива, никаких действий не выполняется.


  • Абсолютным значением (модулем) целого числа называется его значение без знака. Например, абсолютное значение чисел 5 и -5 равно 5.

    Пример дополнения массива с конца:

    <?
    $weights
    = array(1, 3, 5, 10, 15, 25, 50);
    $weights = array_pad($weights. 10, 100);
    // Результат: $weights = array(1, 3, 5, 10, 15, 25, 50, 100, 100, 100);
    ?>


    Пример дополнения массива с начала:

    <?
    $weights
    = array(1, 3, 5, 10, 15, 25, 50);
    $weights = array_pad($weights, -10, 100);
    // Результат: $weights = array(100, 100, 100, 1, 3, 5, 10, 15, 25, 50);
    ?>


    Неправильная попытка дополнения массива:

    <?
    $weights
    = array(1, 3, 5, 10, 15, 25, 50);
    $weights = array_pad($weigtits, 3, 100);
    // Массив $weights не изменяется:
    // $weights = array(1, 3, 5, 10, 15, 25, 50);
    ?>


    Комментарии, по рейтингу, по дате
      Гость 02.02.2009 в 21:03:32   # 9095
    Добавить сообщение
    Чтобы добавлять комментарии зарeгиcтрирyйтeсь