Розглянемо деякі функції для роботи з масивами в PHP, такі як додавання елементів, вилучення їх, об’єднання масивів, транспонування, опрацювання функціями користувача etc. Команди та результати їх виконання скопійовані з вікна інтерактивного інтерпретатора PHP, який запускається командою php -a. Там перший в рядку символ “>” позначає запрошення до введення команди.
array_push
int array_push ( array &$array , mixed $var [, mixed $... ] )
Додає елементи, представлені переданими змінними, в кінець масиву. Функція розглядає масив як стек. Розмір масиву збільшується на число змінних.
Функція дає такий самий ефект, як код
$array[] = $var;
повторений для кожної змінної. Приклад використання:
> $a = array('apple', 'pear', 'plum');
> array_push($a, 'orange', 'lemon');
>var_dump($a);
array(5) {
[0]=>
string(5) "apple"
[1]=>
string(4) "pear"
[2]=>
string(4) "plum"
[3]=>
string(6) "orange"
[4]=>
string(5) "lemon"
}
array_pop
mixed array_pop ( array &$array )
Розглядає масив як стек. Повертає останній елемент масиву, зменшуючи розмір масиву на 1.
> $fruit = array_pop($a);
> echo $fruit;
lemon
> var_dump($a);
array(4) {
[0]=>
string(5) "apple"
[1]=>
string(4) "pear"
[2]=>
string(4) "plum"
[3]=>
string(6) "orange"
}
array_shift
mixed array_shift ( array &$array )
Розглядає масив як чергу. Повертає перший елемент масиву, зменшуючи розмір масиву на 1 і зсуваючи решту елементів донизу. Всі числові ключі перенумеровуються, починаючи з 0. Ключі-рядки не чіпаються.
> $fruit = array_shift($a);
> echo $fruit;
apple
> var_dump($a);
array(3) {
[0]=>
string(4) "pear"
[1]=>
string(4) "plum"
[2]=>
string(6) "orange"
}
array_unshift
int array_unshift ( array &$array , mixed $value1 [, mixed $... ] )
Розглядає масив як чергу. Додає один або кілька елементів до початку масиву, збільшуючи розмір масиву і зсуваючи решту елементів вгору. Порядок елементів початкового масиву не змінюється. Числові ключі перенумеровуються, починаючи з 0, ключі-рядки не чіпаються.
> array_unshift($a, 'apple', 'lemon');
> var_dump($);
array(5) {
[0]=>
string(5) "apple"
[1]=>
string(5) "lemon"
[2]=>
string(4) "pear"
[3]=>
string(4) "plum"
[4]=>
string(6) "orange"
}
array_merge
array array_merge ( array $array1 [, array $... ] )
Об’єднує два або кілька масивів, послідовно додаючи елементи кожного в кінець попереднього. Функція повертає об’єднаний масив. Початкові масиви не змінюються. Для ключів-рядків, які співпадають, значення елементів попереднього масиву перезаписуються значеннями наступного. Проте, якщо співпадають числові ключі, в результат потрапляють всі елементи — числові ключі перенумеровуються, починаючи з 0.
> $b = array('cucumber', 'tomato');
> $c= array_merge($b, $a);
> var_dump($c);
array(7) {
[0]=>
string(8) "cucumber"
[1]=>
string(6) "tomato"
[2]=>
string(5) "apple"
[3]=>
string(5) "lemon"
[4]=>
string(4) "pear"
[5]=>
string(4) "plum"
[6]=>
string(6) "orange"
}
array + array
Іноді потрібно об’єднати 2 масиви з числовими ключами, не перенумеровуючи ключів, тобто поведінка функції array_merge не влаштовує. Бажаний результат досягається операцією “+” над масивами. Якщо числові ключі співпадають, така операція перезапише значення елементів попереднього масиву значеннями наступного.
> $c = $b + $a;
> var_dump($c);
array(5) {
[0]=>
string(8) "cucumber"
[1]=>
string(6) "tomato"
[2]=>
string(4) "pear"
[3]=>
string(4) "plum"
[4]=>
string(6) "orange"
}
array_flip
array array_flip ( array $array )
Транспонує масив — ключі стають значеннями, а значення — ключами.
> $d = array_flip($c);
> var_dump($);
array(5) {
["cucumber"]=>
int(0)
["tomato"]=>
int(1)
["pear"]=>
int(2)
["plum"]=>
int(3)
["orange"]=>
int(4)
}
array_map
array array_map ( callable $callback , array $array1 [, array $... ] )
Застосовує функцію зворотного виклику, передану в параметрі $callback, до масивів, переданих у решті параметрів. Повертає масив, що містить всі елементи масиву $array1 після застосування функції $callback до кожного з параметрів. Функція може бути стандартною або користувацькою. Число параметрів у функції повинно відповідати числу масивів, переданих функції array_map. Не змінює масивів, переданих у параметрах.
> // Анонімна функція користувача
> $e = array_map( function( $item) {
> return '3 ' . $item . 's';
> }, $a );
> var_dump($e);
array(5) {
[0]=>
string(8) "3 apples"
[1]=>
string(8) "3 lemons"
[2]=>
string(7) "3 pears"
[3]=>
string(7) "3 plums"
[4]=>
string(9) "3 oranges"
}
> // Стандартна функція ucfirst
> $e = array_map( 'ucfirst', $a );
> var_dump($e);
array(5) {
[0]=>
string(5) "Apple"
[1]=>
string(5) "Lemon"
[2]=>
string(4) "Pear"
[3]=>
string(4) "Plum"
[4]=>
string(6) "Orange"
}
array_walk
bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )
Застосовує функцію зворотного виклику, передану в параметрі $callback, до масиву, переданого в параметрі $array.
Функція $callback має приймати мінімум 2 параметри:
-
значення елемента масиву, має передаватися за посиланням
-
ключ елемента масиву
-
необов’язковий третій параметр $userdata функції array_walk.
Повертає функція true в разі успіху і false в разі невдачі.
> array_walk( $a, function( &$item, $key ) {
> echo $key . '. ' . $item . "\n";
> $item = strtoupper( $item );
> });
0. apple
1. lemon
2. pear
3. plum
4. orange
> var_dump($a);
array(5) {
[0]=>
string(5) "APPLE"
[1]=>
string(5) "LEMON"
[2]=>
string(4) "PEAR"
[3]=>
string(4) "PLUM"
[4]=>
string(6) "ORANGE"
}
Яка різниця між функціями array_map та array_walk?
Функція array_walk відрізняється від array_map тим, що:
-
в array_walk масив передається за посиланням, тобто вона може його змінити, тоді як array_map ніколи не змінює масивів, що їй передаються;
-
array_walk оперує також ключами масиву на відміну від array_map;
-
array_map повертає масив, тоді як array_walk повертає true/false;
-
array_map може приймати довільне число масивів, array_walk оперує тільки одним;
-
array_walk може приймати довільний третій параметр, хоча це не має особливого значення з PHP v. 5.3, в якій з’явилися анонімні функції.
array_filter
array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
Перебирає елементи масиву $array, пропускаючи кожен через функцію зворотного виклику $callback. Якщо функція повертає true, поточний елемент включається в масив-результат функції array_filter. Ключі зберігаються.
Параметр $flag доданий у PHP 5.6 і визначає, що саме передається у функцію $callback
-
ARRAY_FILTER_USE_KEY – передавати ключі замість значень
-
ARRAY_FILTER_USE_BOTH – передавати і значення, і ключі
Приклад.
> // Відібрати з масиву $a ті рядки, довжина яких не перевищує 4
> $f = array_filter( $a, function( $item ) {
> return (strlen( $item ) <= 4);
> });
> var_dump($f);
array(2) {
[2]=>
string(4) "PEAR"
[3]=>
string(4) "PLUM"
}
Інформація з сайту php.net