Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
масиви.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
100.86 Кб
Скачать

Злиття масивів

Злиття (конкатенація) масивів - це операція створення масиву, що складається з елементів декількох інших масивів. Злиття масивів - це дуже небезпечна операція, оскільки результат злиття підпорядковується своїй логіці, забувши про яку можна втратити дані. Злиття масивів реалізується за допомогою оператора "+" або за допомогою функції 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"

?>