Отримання частини масиву
Для отримання частини масиву використовується функція array_slice(). Їй потрібно передати три параметри:
| ім'я початкового масиву, з якого вибиратимуться елементи;
зсув від початку масиву, тобто скільки елементів від початкумасиву треба пропустити перед початком вибірки;
довжина, тобто кількість елементів, яку потрібно вибрати зпочаткового масиву.
Дана функція повертає частину вказаного масиву, починаючи з вказаного зсуву від початку масиву. Вибірка елементів здійснюється підряд. Довжина результуючого масиву задається параметром Довжина, який є необов'язковим. Якщо цей параметр не вказаний, то вибірка елементів здійснюється до кінця початкового масиву.
Ось невеликі приклади:
$А = array(xox, ror, tot, pop, mom); // задаємо початковий масив
$В = array_slice($A,2); // отримуємо масив $В,
// у якому містяться
// всі елементи масиву $А,
// починаючи з третьої позиції
// (т.к. два треба пропустити).
// Таким чином, масив $В
// міститиме елементи
// tot, pop, mom.
$В = array_slice($A,0,2); // Отримуємо масив $В, у якому
// містяться два елементи
// масиву $А, починаючи з першого
// (т.к. треба пропустити 0
// елементів). Таким чином
// масив $В міститиме
// елементи xox, ror.
Параметри зсув і довжина можуть бути негативними — в цьому випадку відлік проводиться від кінця масиву:
$В = array_slice($A,2,-l); // отримуємо масив $В,
// що складається з елементів tot, // pop.
Функція array_spIice() схожа на функцію array_slice(). Їй потрібно передати ще один додатковий параметр — масив (назвемо його $R). Як і array_slice(), функція array_splice() повертає масив вказаної довжини, починаючи із зсуву $offset, але і замінює передані нею елементи на вміст масиву $R. B принципі, замість масиву $R можна вказати звичайне рядкове значення. Приклад:
$А = array("Audi","Mercedes", "Toyota", "Honda", "Renault"); array_splice($A,l,count($А), "BMW"); // $А = array("Audi","BMW");
7.8. Додавання і видалення елементів масиву
Додавання в кінець масиву
Раніше ми з вами освоїли простий спосіб додавання нових елементів в масив, здійснюваний за допомогою оператора []. Проте в останніх версіях PHP (починаючи з 4) передбачена функція array_push(), яка додає елементи в кінець масиву так само, як і оператора []. Наприклад, наступні два оператори аналогічні:
$А[] = 5; array_push($А,5);
Може виникнути справедливе питання: «А навіщо потрібно два однакові способи робити одне і те ж?». Відповідь полягає в зручності. Якщо необхідно додати один елемент в масив (як в приведеному вище прикладі), то зручніше використовувати оператора []. Використання ж функції array_push() виправдовує себе тоді, коли нам потрібно додати в кінець масиву декілька нових елементів. Наприклад:
$А[] = 5;
$А[] = 7;
$А[] = 9;
$А[] = 10;
$А[] = 15;
Натомість можна записати:
array_push($A, 5,7,9,10,15);
Примітка.
Функція array_push(), крім всього іншого, повертає новий розмір масиву. Тобто, якщо крім того, щоб додати нові елементи в масив, вам потрібно дізнатися і його нову довжину, то можна записати $D = array_push($A, 5, 7, 9, 10, 15). Таким чином, нова довжина масиву буде привласнена змінною $D.
Видалення останнього елементу списку
Функція array_pop() протилежна функції array_push(). Вона «виштовхує» вершину списку (останній елемент списку). Іншими словами, функція array_pop() повертає значення останнього елементу масиву і видаляє його із списку.
Функції array_pop() потрібно передати всього один параметр — ім'я масиву (списку):
$A = array(xox, ror, tot pop, mom);
$T=array_pop($A); // змінній $Т привласнили
// значення mom, а масив $A
// позбувся цього останнього
// елементу і тепер складається з
// елементів xox, ror, tot, pop.
array pop($A); // масив $А ще раз позбувся останнього
// елементу і тепер
// складається з елементів xox, ror, tot.
Примітка.
За допомогою функцій array_push() і array_pop() ми можемо будувати структури LIFO (Last In First Out — «останній увійшов — перший вийшов»), що нагадують стік. Структури типу стек широко застосовуються в програмуванні. Класичне застосування стека — зворотний польський запис, який використовується для розбору арифметичних виразів і обчислення їх значення.
Додавання в початок списку. Видалення першого елементу списку
Функції array_unshift() і array_shift() схожі на функції array_push()
і array_pop(), але тільки працюють не з кінцем списку, а з його початком. Функція array_unshift() додає елементи в початок списку, а функція array_shift() повертає значення першого елементу списку і видаляє його із списку (видаляє «голову» списку):
$А = array(3,4,5) ;
array_unshift($A, 1,2); // отримуємо $А = array(l,2,3,4,5)
array_shift($A); // отримуємо $А = array(2,3,4,5);
Примітка.
Функції array_unshift() і array_shift() корисно використовувати, якщо ви хочете побудувати чергу типа FIFO (First In First Out — «перший увійшов — перший вийшов»). Черга необхідна для послідовної обробки елементів масиву. Стік і черга в мовах З і Pascal є основними динамічними структурами. Поськолькудліна масивів в PHP обмежена вільними системними ресурсами, потреба в стеку і черзі зникає. Функції для організації стека і черги були написані виключно для зручності програміста — раптом ви, програмуючи на З, звикли працювати саме із стеком або з чергою?
Функція array_unique()
Функція array_unique() призначена для витягання унікальних значень масиву разом з ключами цих значень. Ось приклад застосування цієї функції:
$Arr = array("a"=>"AAA","b"="BBB","c","d","e"="BBB", "d");
$Unique_Arr = array_unique($Arr);
// ?UniqueArr = array("a"=>"AAA","b"="BBB","c","d");