
- •Фукції для роботи з масивами і операції над масивами Функції для роботи з масивами
- •Функція list()
- •Функція array()
- •Операції над масивами Сортування масивів
- •Сортування масиву за значеннями з допомогою функцій asort() і arsort():
- •Сортування по ключам за допомогою функцій ksort() і krsort():
- •Сортування по ключам за допомогою функції uksort():
- •Сортування за значеннями за допомогою функції uasort()
- •Перевертання масиву за допомогою функції array_reverce()
- •Сортування списку за допомогою функцій sort() і rsort()
- •Перемішування списку за допомогою функції shuffle()
- •Операції з ключами і значеннями масиву
- •Злиття масивів
- •Функція array_merge()
- •Отримання частини масиву
- •Вставка та видалення елементів масивів
- •Змінні та масиви
- •Створення списку - діапазону чисел
- •Лічильник елементів масиву
- •Видалення масиву і його елементів
- •Перетворення в масив (тип array)
- •Порівняння масивів
- •Оператори, що працюють з масивами:
- •Деякі корисні практичні приклади по роботі з масивами
Фукції для роботи з масивами і операції над масивами Функції для роботи з масивами
Розглянемо деякі основні функції для роботи з масивами.
Функція list()
Припустимо, у нас є масив, що складається з трьох елементів:
$Names[0] = "Олександр"; $Names[1] = "Микола"; $Names[2] = "Яків";
Припустимо, в якийсь момент нам потрібно передати значення всіх трьох елементів масиву, відповідно трьом змінним: $alex, $nick, $yakov. Це можна зробити так:
$Alex = $names[0]; $Nick = $names[1]; $Yakov = $names[2];
Якщо масив великий, то такий спосіб привласнення елементів масиву змінним не дуже зручний. Є більш раціональний підхід - використання функції list():
list ($alex, $nick, $yakov) = $names;
Якщо нам потрібні тільки "Микола" і "Яків", то ми можемо зробити так:
list (, $nick, $yakov) = $names;
Функція array()
Функція Array() використовується спеціально для створення масивів. При цьому вона дозволяє створювати порожні масиви. Ось методи використання функції Array():
<?php
// Створює порожній масив:
$arr = array();
// Створює список з трьома елементами. Індекси починаються з нуля:
$arr2 = array("Мерзлюк","Петренко","Кличко");
// Створює асоціативний масив з трьома елементами:
$arr3 = array("Мерзлюк"=>"Іван", "Петренко"=>"Петро", "Кличко"=>"Сидір");
// Створює багатовимірний асоціативний масив:
$arr4 = array("name"=>"Мерзлюк", "age"=>"24", "email"=>"merzluk@i.ua");
$arr4 = array("name"=>"Петренко", "age"=>"34", "email"=>"petrentko@i.ua");
$arr4 = array("name"=>"Кличко", "age"=>"47", "email"=>"klychko@i.ua");
?>
Операції над масивами Сортування масивів
Почнемо з найпростішого - сортування масивів. У PHP для цього існує дуже багато функцій. З їх допомогою можна сортувати асоціативні масиви і списки в порядку зростання або убування, а також у тому порядку, в якому вам необхідно - за допомогою користувацької функції сортування.
Сортування масиву за значеннями з допомогою функцій asort() і arsort():
Функція asort() сортує масив, вказаний в її параметрі, так, щоб його значення йшли в алфавітному (якщо це рядки) або у зростаючому (для чисел) порядку. При цьому зберігаються зв'язки між ключами та відповідними їм значеннями, тобто деякі пари ключ => значення просто "спливають" вгору, а деякі - навпаки, "опускаються". Наприклад:
<?php
$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha","d"=>"Processor");
asort($A);
foreach($A as $k=>$v) echo "$k=>$v ";
// Виводить "c=>Alpha d=>Processor b=>Weapon a=>Zero"
// Як бачимо, змінився тільки порядок пар ключ => значення
?>
Функція arsort() виконує те ж саме, за одним винятком: вона впорядковує масив не за зростанням, а за спаданням.
Сортування по ключам за допомогою функцій ksort() і krsort():
Функція ksort() практично ідентична функції asort(), з тією відмінністю, що сортування здійснюється не за значеннями, а за ключами (у порядку зростання). Наприклад:
<?php
$A=array("d"=>"Zero", "c"=>"Weapon", "b"=>"Alpha", "a"=>"Processor");
ksort($A);
for(Reset($A); list($k,$v)=each($A);) echo "$k=>$v ";
// Виводить "a => Processor b => Alpha c => Weapon d => Zero"
?>
Функція для сортування за ключам у зворотному порядку називається krsort() і застосовується точно в такому ж контексті, що і ksort().
Сортування по ключам за допомогою функції uksort():
Досить часто нам доводиться сортувати щось за більш складними критеріями, ніж просто за алфавітом. Наприклад, нехай у $Files зберігається список імен файлів і підкаталогів в поточному каталозі. Можливо, ми захочемо вивести цей список не тільки в лексикографічному порядку, але також і щоб всі каталоги передували файлам. У цьому випадку нам варто скористатися функцією uksort(), написавши попередньо функцію порівняння з двома параметрами, як того вимагає uksort(). (Нижче використовується оператор && - синонім оператору and, а також використовується функція is_dir(), яка перевіряє, чи знаходиться по указаному шляху саме директорія; якщо так, то функція повертає TRUE, якщо ні - FALSE)
<?php
// Ця функція повинна порівнювати значення $f1 і $f2 і повертати:
// -1, якщо $f1<$f2,
// 0, якщо $f1 == $f2
// 1, якщо $f1>$f2
function FCmp($f1, $f2)
{ // Каталог завжди передує файлу
if(is_dir($f1) && !is_dir($f2)) return -1;
// Файл завжди йде після каталогу
if(!is_dir($f1) && is_dir($f2)) return 1;
// Інакше порівнюємо лексикографічно
if($f1<$f2) return -1; elseif($f1>$f2) return 1; else return 0;
}
// Нехай $Files містить масив з ключами - іменами файлів
// В поточному каталозі. Відсортуємо його.
uksort($Files,"FCmp"); // передаємо функцію сортування "за посиланням"
?>
Звичайно, зв'язки між ключами і значеннями функцією uksort() зберігаються, тобто, знову ж таки, деякі пари просто "спливають" вгору, а інші - "осідають".