
- •Фукції для роботи з масивами і операції над масивами Функції для роботи з масивами
- •Функція list()
- •Функція array()
- •Операції над масивами Сортування масивів
- •Сортування масиву за значеннями з допомогою функцій asort() і arsort():
- •Сортування по ключам за допомогою функцій ksort() і krsort():
- •Сортування по ключам за допомогою функції uksort():
- •Сортування за значеннями за допомогою функції uasort()
- •Перевертання масиву за допомогою функції array_reverce()
- •Сортування списку за допомогою функцій sort() і rsort()
- •Перемішування списку за допомогою функції shuffle()
- •Операції з ключами і значеннями масиву
- •Злиття масивів
- •Функція array_merge()
- •Отримання частини масиву
- •Вставка та видалення елементів масивів
- •Змінні та масиви
- •Створення списку - діапазону чисел
- •Лічильник елементів масиву
- •Видалення масиву і його елементів
- •Перетворення в масив (тип array)
- •Порівняння масивів
- •Оператори, що працюють з масивами:
- •Деякі корисні практичні приклади по роботі з масивами
Злиття масивів
Злиття (конкатенація) масивів - це операція створення масиву, що складається з елементів декількох інших масивів. Злиття масивів - це дуже небезпечна операція, оскільки результат злиття підпорядковується своїй логіці, забувши про яку можна втратити дані. Злиття масивів реалізується за допомогою оператора "+" або за допомогою функції array_merge(). Злиття списків може здійснюватися тільки за допомогою функції array_merge(). Припустимо, ми маємо два масиви:
<?php
$A = array("1"=>"перший", "2"=>"другий");
$B = array("1"=>"перший", "2"=>"другий");
?>
Тепер зіллємо дані два масиви в один масив $C:
<?php
$C = $A + $B;?>
?>
Оператор "+" для масивів не коммутативний. Це означає, що $A + $B не дорівнює $B + $A. У результаті розглянутого прикладу ми отримаємо масив $C такого вигляду:
"1" => "Перший", "2" => "Другий", "3" => "Третій", "4" => "Четвертий"
А в результаті $B + $A ми отримаємо такий масив:
"3" => "Третій", "4" => "Четвертий", "1" => "Перший", "2" => "Другий"
> При злитті списків такий метод не працює. Пояснимо даний факт на прикладі. Припустимо, у нас є два масиви:
<?php
$A = array (10,11,12);
$B = array (13,14,15);
?>
У результаті злиття списків $A і $B ( $A + $B ) ми отримаємо: 10,11,12. А це зовсім не той результат, який ми хотіли отримати ... Пов'язано це з тим, що при злитті списків з однаковими індексами в результуючому масиві залишається елемент першого масиву, причому на тому ж місці. У такому випадку нам необхідно використовувати функцію array_merge()
Функція array_merge()
Функція array_merge() покликана усунути всі недоліки, властиві оператору "+" для злиття масивів. Вона зливає масиви, перераховані в її аргументах, в один великий масив і повертає результат. Якщо в масивах зустрічаються однакові ключі, в результат поміщається пара ключ=>значення з того масиву, який розташований правіше у списку аргументів. Проте це не зачіпає числові ключі: елементи з такими ключами поміщаються в кінець результуючого масиву в будь-якому випадку. Таким чином, за допомогою array_merge() ми можемо позбутися усіх недоліків оператора "+" для масивів. Ось приклад, що зливає два списки в один:
<?php
$L1=array(100,200,300);
$L2=array(400,500,600);
$L=array_merge($L1,$L2);
// Тепер $L === array (100,200,300,400,500,600);
?>
Завжди використовуйте цю функцію, якщо вам потрібно працювати саме зі списками, а не зі звичайними асоціативними масивами.
Отримання частини масиву
Для отримання частини масиву можна використовувати функцію array_slice()
<?php
array_slice(array $Arr, int $offset [, int $len])
?>
Ця функція повертає частину асоціативного масиву, починаючи з пари ключ => значення зі зсувом (номером) $offset від початку і довжиною $len (якщо останній параметр не заданий - до кінця масиву). Параметри $offset і $len задаються по точно таким же правилам, як і аналогічні параметри в функції substr(). А саме - вони можуть бути від'ємними (в цьому випадку відлік здійснюється від кінця масиву), і т.д. Ось кілька прикладів:
<?php
$input = array ("a", "b", "c", "d", "e");
$output = array_slice ($input, 2); // "c", "d", "e"
$output = array_slice ($input, 2, -1); // "c", "d"
$output = array_slice ($input, -2, 1); // "d"
$output = array_slice ($input, 0, 3); // "a", "b", "c"
?>