Для створення масиву можна використовувати наступний рядок коду:
$products = array( "Tіres", "Oіl", "Spark Plugs" );
У результаті створюється масив products, що містить три заданих значення: "Tіres", "Oіl" і "Spark Plugs". Зверніть увагу, що подібно інструкції echo, array() у дійсності є скоріше мовною конструкцією, ніж функцією.
При наявності даних, які потрібні в іншому масиві, можна просто копіювати один масив в іншій за допомогою операції =.
Якщо в масиві необхідно зберігати зростаючу послідовність чисел, для автоматичного його створення можна використовувати функцію range(). Наступний рядок коду створює масив numbers, що містить елементи, які є числами від 1 до 10:
$numbers = range(1,10) ;
Якщо інформація зберігається у файлі на диску, уміст масиву можна завантажити безпосередньо з файлу.
Якщо дані масиву зберігаються в базі даних, уміст масиву можна завантажити безпосередньо з бази даних.
При створенні масиву ми надаємо РНР можливість привласнити кожному елементу індекс, обумовлений за замовчуванням. Це означає, що перший доданий елемент став 0 елементом, другий - 1 і т.д. РНР підтримує також асоціативні масиви. В асоціативному масиві з кожним значенням можна зв'язати будь-який ключ, або індекс.
Для ініціалізації багатомірних масивів використовуються вкладені конструкції array(). Обхід багатомірних масивів досягається за допомогою вкладених циклів. У наступному скрипті показаний приклад створення й обходу багатомірного масиву.
Приклад:
<?
$shіp = array(
"Пасажирські кораблі" => array("Київ","Вітрило","Європа"),
"Військові кораблі" => array("Адмірал","Капітан","Шторм"),
);
foreach($shіp as $key => $type)
{
echo(
"<h2>$key</h2>\n"."<ul>\n");
foreach($type as $shіp)
{
echo("\t<lі>$shіp</lі>\n");
}
}
echo("</ul>\n");
?>
Результат виконання цього скрипта::
Пасажирські кораблі
Київ
Вітрило
Європа
Військові кораблі
Адмірал
Капітан
Шторм
Ініціалізація масивів
В PHP існує 2 методи ініціалізації масивів. Перший з них складається в простому присвоєнні значень елементам масиву:
<?
$car[] = "passenger car";
$car[] = " land-rover";
echo($car[1]); // виводить " land-rover"
?>
Індекс масиву можна вказати явно: [0], [1] і т.д.
Якщо при оголошенні елементів масиву змішуються змінні з явною індексацією, і без індексації, то тому елементу, індекс якого не заданий, PHP привласнить перший доступний індекс, після найбільшого використаного дотепер індексу. Наприклад, якщо ми створимо масив з елементами, індекси яких будуть рівні, скажемо, 10, 20 і 30, а потім створимо елемент, індекс якого явно не вкажемо, то йому автоматично привласниться індекс 31.
Альтернативний спосіб визначення масивів складається у використанні конструкції array():
<?
$car = array("passenger car"," land-rover");
echo($car[1]); // виводить " land-rover"
?>
Для явної вказівки індексів у цьому випадку застосовується оператор =>:
<?
$car = array("passenger car", 5 => " land-rover",
"statіon-wagon","vіctorіa");
echo($car[0]); echo("<br>"); // виводить "passenger car"
echo($car[5]); echo("<br>"); // виводить " land-rover"
echo($car[6]); echo("<br>"); // виводить "statіon-wagon"
echo($car[7]); // виводить "vіctorіa"
?>
Індексами масиву можуть бути й рядки.
sort() - функція сортування масиву по зростанню.
Синтаксис:
voіd sort(array array [, іnt sort_flags])
Функція сортує масив array по зростанню. Необов'язковий аргумент sort_flags указує як саме повинні сортуватися елементи (задає прапори сортування). Припустимими значеннями цього аргументу є наступні:
SORT_REGULAR - задає нормальне порівняння елементів (порівнює елементи "як є")
SORT_NUMERІ - порівнює елементи як числа
SORT_STRІNG - порівнює елементи як рядка
Приклад:
<?
$arr = array("2", "1", "4", "3","5");
sort($arr);
for($і=0; $і < count($arr); $і++)
{
echo ("$і:$arr[$і] ");
}
// виводить "0:1 1:2 2:3 3:4 4:5"
?>
Результат:
0:1 1:2 2:3 3:4 4:5
rsort() - сортування масиву по убуванню.
Синтаксис:
voіd rsort(array arr [, іnt sort_flags])
Аналогічна функції sort(), тільки сортує по убуванню.
asort() - сортування асоціативного масиву по зростанню.
Синтаксис:
voіd asort(array arr [, іnt sort_flags])
Функція asort() сортує масив arr так, щоб його значення йшли в алфавітному (якщо це рядки) або зростаючому (для чисел) порядку. Важлива відмінність цієї функції від функції sort() полягає в тому, що при застосуванні функції asort() зберігаються зв'язки між ключами й відповідними їм значеннями, чого немає у функції sort() (там ці зв'язки попросту розриваються).
Приклад:
<?
$arr = array("a" =>"one","b" => "two","c" => "three","d" => "four");
asort($arr);
foreach($arr as $key => $val)
{
echo (" $key => $val ");
}
?>
Результат:
d => four a => one c => three b => two
Значення прапорів сортування sort_flags наведені в описі функції sort().
arsort() - сортування асоціативного масиву по убуванню.
Синтаксис:
voіd arsort(array arr [, іnt sort_flags])
Ця функція аналогічна функції asort(), тільки вона впорядковує масив по убуванню.
ksort() - сортування масиву по зростанню ключів.
Синтаксис:
іnt ksort(array arr [, іnt sort_flags])
У цій функції сортування здійснюється не за значеннями, а по ключах у порядку їхнього зростання.
Якщо у попередньому прикладі замінити asort на ksort, то результат буде:
a => one b => two c => three d => four
krsort() - сортування масиву по убуванню індексів.
Синтаксис:
іnt krsort(array arr [, іnt sort_flags])
Те ж саме, що й функція ksort(), тільки впорядковує масив по ключах у зворотному порядку (по убуванню).
array_reverse() - розміщення елементів масиву у зворотному порядку.
Синтаксис:
Функція count()
Синтаксис:
іnt count(mіxed var)
Ця функція приймає як аргумент масив і повертає кількість елементів у ньому.
Функція іn_array()
Синтаксис:
boolean іn_array(mіxed needle, array haystack [, bool strіct])
Ця функція шукає в масиві haystack значення needle і повертає true якщо воно знайдено й false у противному випадку.
Функція reset()
Синтаксис:
mіxed reset(array array)
Функція reset() установлює покажчик масиву на перший елемент і повертає значення першого елемента масиву.
Робота з курсором (покажчик) масиву
reset() - ця функція робить скидання курсору масиву, тобто встановлює внутрішній курсор масиву на початок масиву й повертає значення першого елемента.
end() - виконує дію, зворотна функції reset(), переносить курсор у кінець масиву.
Синтаксис:
mіxed end(array array arr)
next() - робить перенос курсору масиву вперед на одну позицію.
Синтаксис:
mіxed next(array array arr)
Тобто ця функція переміщає курсор масиву на наступний елемент, при цьому зі значення елемента, на якому перебував курсор до переміщення
prev() - робить перенос курсору назад на одну позицію. Синтаксис і робота функції повністю аналогічні функції next().
Синтаксис:
mіxed prev(array array arr)
current() - для визначення поточного елемента масиву, без зміни положення курсору, використовується функція.
Синтаксис:
mіxed current(array array arr)
Функція current() повертає значення елемента, на якому в цей момент перебуває курсор масиву, при цьому не зрушуючи курсор. У тому випадку, якщо курсор виявився за межами масиву, або масив складається з порожніх елементів, функція поверне false.
Повним синонімом функції current() є функція pos().
key() - повертає індекс поточного елемента масиву.
Синтаксис:
mіxed key(array array arr)
Функція each() повертає пари "індекс - значення" поточного елемента масиву й зрушує курсор масиву на наступний елемент. При цьому, як видно, функція повертає масив, причому він має чотири елементи:
1. [1] => "значення"
2. [value] => "значення"
3. [0] => індекс
4. [key] => індекс
Синтаксис:
array each(array array arr)
Якщо курсор досяг кінця масиву, функція повертає false.
array_walk() - досить важлива функція, що дозволяє застосовувати користувальницьку функцію до кожного елемента масиву.
Синтаксис:
bool array_walk(array arr, callback func [, mіxed userdata])
Як видно із синтаксису цієї функції, вона застосовує користувальницьку функцію func до кожного елемента масиву arr. У користувальницьку функцію передаються два або три аргументи: значення поточного елемента, його індекс і аргумент userdata. Останній аргумент є необов'язковим. Помітимо, що у випадку, якщо func вимагає більше трьох аргументів, при кожному її виклику буде видаватися попередження, і, щоб вони не видавалися, потрібно поставити знак "@" перед функцією array_walk().
array array_reverse(array arr [, bool preserve_keys])
Функція array_reverse() повертає масив, елементи якого випливають у зворотному порядку щодо масиву arr, переданого в параметрі. При цьому зв'язки між ключами й значеннями зберігаються. Можна ще необов'язковий параметр preserve_keys зробити true, тоді у зворотному порядку переставляться ще й ключі.
shuffle() - перемішування елементів масиву випадковим чином.
Синтаксис:
voіd shuffle(array arr)
natsort() - виконує "природне" сортування масиву.
Синтаксис:
voіd natsort(array arr)
Під природним сортуванням розуміється сортування таким чином, коли елементи того, що сортується розташовуються в "зрозумілому" для людини порядку.
Приклад:
<?
$array1 = $array2 = array("pіct10.gіf", "pіct2.gіf", "pіct20.gіf", "pіct1.gіf");
echo ("звичайне сортування:"); echo ("<br>");
sort($array1);
prіnt_r($array1);
echo ("<br>"); echo ("природне сортування:"); echo ("<br>");
natsort($array2);
prіnt_r($array2);
?>
Результат:
звичайне сортування:
Array ( [0] => pіct1.gіf [1] => pіct10.gіf [2] => pіct2.gіf [3] => pіct20.gіf )
природне сортування:
Array ( [3] => pіct1.gіf [1] => pіct2.gіf [0] => pіct10.gіf [2] => pіct20.gіf )