создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Урок 7. Функции для массивов в PHP

Содержание

Теория

Методы и функции: count, in_array, array_sum, array_product, range, array_merge, array_merge_recursive, array_slice, array_splice, array_keys, array_values, array_combine, array_flip, array_reverse, array_search, array_replace, array_count_values, функции для сортировки, array_rand, shuffle, array_unique, array_shift, array_pop, array_unshift, array_push, array_pad, array_fill, array_fill_keys, array_chunk, array_count_values, array_intersect, array_diff, array_map

Функция count

Функция count подсчитывает количество элементов массива.

Синтаксис: count(массив).

Пример

Функция вернет количество элементов массива:

<?$a=['a','b','c','d'];echo count($a)?>

4.

Функция in_array

Функция in_array проверяет наличие заданного элемента в массиве.

Синтаксис: in_array(что искать,в каком массиве). Если элемент есть, то результат будет 1, если нет, - пусто (true, falshe(?)).

Пример

Проверить, есть ли в массиве $a элемент со значением 3:

<?$a=[1,2,3,4,5];echo in_array(3,$a)?>

1.

<?$a=[1,2,3,4,5,3,3,3];echo in_array(3,$a)?>

1.

<?$a=[1,2,3,4,5];echo in_array(8,$a)?>

.

Функция array_sum

Функция array_sum вычисляет сумму элементов массива.

Синтаксис: array_sum(массив).

Пример

Найти сумму элементов массива:

<?$a=[1,2,3,4,5];echo array_sum($a)?>

15.

Пример

Найти сумму цифр числа. Для этого разобьем число в массив с помощью str_split и сложим элементы этого массива с помощью array_sum:

<?$n=12345;echo array_sum(str_split($n,1))?>

15.

Функция array_product

Функция array_product вычисляет произведение элементов массива (умножает).

Синтаксис: array_product(массив).

Пример

Найти произведение элементов массива:

<?$a=[1,2,3,4,5];echo array_product($a)?>

120.

Функция range

Функция range создает массив с диапазоном элементов. К примеру, можно создать массив, заполненный числами от 1 до 100 или буквами от 'a' до 'z'. Диапазон, который сгенерирует функция, задается параметрами: 1-й параметр откуда генерировать, а 2-й - докуда.

3-й необязательный параметр функции задает шаг. К примеру, можно сделать ряд 1,3,5,7, если задать шаг 2, или ряд 1,4,7,10 если задать шаг 3.

Синтаксис: range(откуда,докуда,[шаг]).

Пример

Создать массив, заполненный числами от 1 до 5:

<?$a=range(1,5);print_r($a)?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

Пример

Создать массив, заполненный числами от 5 до 1:

<?$a=range(5,1);print_r($a)?>

Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )

Пример

Создать массив, заполненный числами от 0 до 10 c шагом 2:

<?$a=range(0,10,2);print_r($a)?>

Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 [5] => 10 )

Пример

Создать массив, заполненный буквами от 'a' до 'e':

<?$a=range('a','e');print_r($a)?>

Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )

Функция array_merge

Функция array_merge сливает 2 и более массива вместе.

Если в сливаемых массивах встречаются одинаковые ключи, останется только 1 из таких элементов. Если нужно, чтобы остались все элементы с одинаковыми ключами, используйте функцию array_merge_recursive.

ПРОВЕРЬ!!!

Синтаксис: array_merge(1 массив,2 массив,…).

Пример

Функция слила массивы:

<?$a=[1,2,3];$b=['a','b','c'];$r=array_merge($a,$b);print_r($r)?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => a [4] => b [5] => c ) .

<?$a=[1,2,3];$b=[1,'b','c'];$r=array_merge($a,$b);print_r($r)?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 1 [4] => b [5] => c ) .

Функция array_merge_recursive

Функция array_merge_recursive сливает 2 и более массива вместе.

Отличие от функции array_merge проявляется тогда, когда в сливаемых массивах есть одинаковые ключи. В этом случае array_merge_recursive оставляет оба ключа.

Синтаксис: array_merge_recursive(1 массив,2 массив,…).

Пример

В данном примере 2 массива слились вместе с помощью array_merge_recursive.

Обратите внимание на то, что станет с элементами с одинаковыми ключами 'www':

<?$a=['www'=>'a','b','c'];$b=['www'=>1,2,3];$r=array_merge_recursive($a,$b);print_r($r)?>

Array ( [www] => Array ( [0] => a [1] => 1 ) [0] => b [1] => c [2] => 2 [3] => 3 ) .

Для сравнения смотрите, как сработает функция array_merge - останется только последний элемент:

<?$a=['www'=>'a','b','c'];$b=['www'=>1,2,3];$r=array_merge($a,$b);print_r($r)?>

Array ( [www] => 1 [0] => b [1] => c [2] => 2 [3] => 3 ) .

Функция array_slice

Функция array_slice отрезает и возвращает часть массива. При этом сам массив не меняется. 1-м параметром указывается массив для разрезания. 2-м параметром указывается, с какого элемента начинать отрезание, а 3-м - сколько элементов отрезать. 3-й параметр может быть отрицательным, в этом случае отсчет начнется с конца (-1 - последний элемент, -2 - предпоследний и так далее). 3-й параметр можно вообще не указывать, в этом случае массив отрежется до самого конца.

Последний необязательный параметр регулирует, сохранять ли ключи при отрезании (true - сохранять, false (по умолчанию) - не сохранять)(? И так сохраняет. PHP5).

Синтаксис: array_slice(массив,откуда отрезать,[сколько],[сохранять ключи=false]).

Напоминаем: элементы массива считаются с 0.

Пример

Вырезать 3 элемента с 0-го:

<?$a=['a','b','c','d','e'];print_r(array_slice($a,0,3))?>

Array ( [0] => a [1] => b [2] => c ) .

Пример

Вырезать 3 элемента с 1-го:

<?$a=['a','b','c','d','e'];print_r(array_slice($a,1,3))?>

Array ( [0] => b [1] => c [2] => d ) .

Пример

Вырезать элементы с 1-го до конца массива. Для этого 3-й параметр не пишем:

<?$a=['a','b','c','d','e'];print_r(array_slice($a,1))?>

Array ( [0] => b [1] => c [2] => d [3] => e ) .

Пример

Вырезать элементы с предпоследнего, 2 штуки. Для этого 2-й параметр установим в -2 (позиция предпоследнего элемента):

<?$a=['a','b','c','d','e'];print_r(array_slice($a,-2,2))?>

Array ( [0] => d [1] => e ) .

Пример

По умолчанию массив не сохраняет(?) ключи при вырезании:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];print_r(array_slice($a,0,3))?>

Array ( [a] => 1 [b] => 2 [c] => 3 ) .

Сохраняет. PHP5!

Пример

Сделать так, чтобы ключи сохранялись(?). Для этого последний параметр установим как true:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];print_r(array_slice($a,0,3,true))?>

Array ( [a] => 1 [b] => 2 [c] => 3 ) .

И без true сохраняет. PHP5!

Функция array_splice

Функция array_splice отрезает и возвращает часть массива. При этом отрезанная часть исчезает из массива.

Вместо отрезанной части можно вставлять новые элементы.

1-м параметром указывается массив для разрезания. 2-м параметром указывается, с какого элемента начинать отрезание, а 3-м - сколько элементов отрезать. 3-й параметр может быть отрицательным, в этом случае отсчет начнется с конца (-1 - последний элемент, -2 - предпоследний и так далее). 3-й параметр можно вообще не указывать, в этом случае массив отрежется до самого конца.

В последнем необязательным параметре можно задавать массив элементов, которые будут вставлены взамен удаленных.

Синтаксис: array_splice(массив,откуда отрезать,[сколько],[вставить взамен]).

Напоминаем: элементы массива считаются с 0.

Пример

Вырезать 3 элемента с 0-го:

<?$a=['a','b','c','d','e'];print_r(array_splice($a,0,3))?>

Array ( [0] => a [1] => b [2] => c ) .

При этом массив $a примет следующий вид:

Array ( [0] => d [1] => e ) .

Пример

Вырезать 3 элемента с 1-го:

<?$a=['a','b','c','d','e'];print_r(array_splice($a,1,3))?>

Array ( [0] => b [1] => c [2] => d ) .

При этом массив $a примет следующий вид:

Array ( [0] => a [1] => e ) .

Пример

Вырезать элементы с 1-го до конца массива. Для этого 3-й параметр не пишем:

<?$a=['a','b','c','d','e'];print_r(array_splice($a,1))?>

Array ( [0] => b [1] => c [2] => d [3] => e ) .

При этом массив $a примет следующий вид:

Array ( [0] => a ) .

Пример

Вырезать 2 элемента с предпоследнего. Для этого 2-й параметр установим в -2 (позиция предпоследнего элемента):

<?$a=['a','b','c','d','e'];print_r(array_splice($a,-2,2))?>

Array ( [0] => d [1] => e ) .

При этом массив $a примет следующий вид:

Array ( [0] => a [1] => b [2] => c ) .

Пример

Вырезать 2 элемента с 1-го, а в замен вставить элементы 1,2,3:

<?$a=['a','b','c','d','e'];print_r(array_splice($a,1,2,[1,2,3]))?>

Array ( [0] => b [1] => c ) .

При этом массив $a примет следующий вид:

Array ( [0] => a [1] => 1 [2] => 2 [3] => 3 [4] => d [5] => e ) .

Пример

Ничего не вырезаем, а просто вставим элементы 1,2,3 начиная с позиции 1. Для этого 3-й параметр ставится в 0:

<?$a=['a','b','c','d','e'];print_r(array_splice($a,1,0,[1,2,3]))?>

Array ( ) .

Результат выполнения кода: [].

При этом массив $a примет следующий вид:

Array ( [0] => a [1] => 1 [2] => 2 [3] => 3 [4] => b [5] => c [6] => d [7] => e ) .

Функция array_keys

Функция array_keys получает ключи массива и записывает их в новый массив.

Синтаксис: array_keys(массив).

Пример

Функция получила ключи из массива:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];print_r(array_keys($a))?>

Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) .

Функция array_values

Функция array_values выбирает все значения из массива.

Синтаксис: array_values(массив).

Пример

Получить все значения массива:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];print_r(array_values($a))?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) .

Функция array_combine

Функция array_combine осуществляет слияние двух массивов в 1 ассоциативный.

1-м параметром функция принимает массив будущих ключей, а 2-м - массив будущих значений.

Синтаксис: array_combine(массив ключей,массив значений).

Пример

Функция сольет 2 массива в 1 ассоциативный. При этом соответствующие элементы из 1-го массива станут ключами элементов из 2-го массива:

<?$k=['green','blue','red'];$e=['зеленый','голубой','красный'];$a=array_combine($k,$e);print_r($a)?>

Array ( [green] => зеленый [blue] => голубой [red] => красный ) .

Функция array_flip

Функция array_flip производит обмен местами ключей и значений массива.

Синтаксис: array_flip(массив).

Пример

Поменять местами ключи и значения массива:

<?$a=['a'=>1,'b'=>2,'c'=>3];$r=array_flip($a);print_r($r)?>

Array ( [1] => a [2] => b [3] => c ) .

Функция array_reverse

Функция array_reverse переворачивает массив в обратном порядке.

1-м параметром передается массив, а 2-м - сохранять ключи при перестановке элементов или нет (true - да, false - нет).

2-й параметр указывать необязательно. В таком случае по умолчанию 2-м параметром является false.

Синтаксис: array_reverse(массив,[сохранять ли ключи]).

Пример

Перевернуть массив:

<?$a=[1,2,3,4,5];$a=array_reverse($a);print_r($a)?>

Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 ) .

Пример

Учтите, что по умолчанию ключи оторвутся от элементов:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];$a=array_reverse($a);print_r($a)?>

Array ( [e] => 5 [d] => 4 [c] => 3 [b] => 2 [a] => 1 ) .

Ничего не отрывается. PHP5.

Пример

Чтобы ключи переворачивались вместе с массивом, нужно передать 2-й параметр:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];$a=array_reverse($a,true);print_r($a)?>

Array ( [e] => 5 [d] => 4 [c] => 3 [b] => 2 [a] => 1 ) .

И без 2-го параметра всё переворачивается, как надо (ничего не отрывается). PHP5.

Функция array_search

Функция array_search осуществляет поиск значения в массиве и возвращает ключ 1-го найденного элемента. Если такой элемент не найдет - вернет false. 3-й параметр задает строгое сравнение по типу (как по ===). Если поставить true, он будет сравнивать строго, а если false (по умолчанию), - то нет.

Синтаксис: array_search(что ищем,где ищем,[сравнивать по типу=false]).

Пример

Найти в массиве элемент со значением 'c', в результате получить его ключ (он равен 2, отсчет с 0):

<?$a=['a','b','c','d','e'];echo array_search('c',$a)?>

2.

Функция array_replace

Функция array_replace заменяет значения 1-го массива значениями с такими же ключами из других переданных массивов. Если ключ из 1-го массива присутствует во 2-м массиве, его значение заменяется на значение из 2-го массива. Если ключ есть во 2-м массиве, но отсутствует в 1-м, - он будет создан в 1-м массиве. Если ключ присутствует только в 1-м массиве, то сохранится как есть.

Если для замены передано несколько массивов, они будут обработаны в порядке передачи и более поздние массивы будут перезаписывать значения из предыдущих.

Синтаксис: array_replace(массив,массив,массив,…).

Пример

Заменить элемент с ключом 0 на '!', а элемент с ключом 2 - на '!!':

<?$a=['a','b','c','d','e'];$r=array_replace($a,[0=>'!',2=>'!!']);print_r($r)?>

Array ( [0] => ! [1] => b [2] => !! [3] => d [4] => e ) .

Функция array_count_values

Функция array_count_values производит подсчет количества всех значений массива. Возвращает ассоциативный массив, в котором ключами будут элементы массива, а значениями - их количество в массиве.

Синтаксис: array_count_values(массив).

Пример

Подсчитаем, сколько раз встречается каждый из элементов:

<?$a=['a','a','a','b','b','c'];print_r(array_count_values($a))?>

Array ( [a] => 3 [b] => 2 [c] => 1 ) .

Сортировка массивов

Для сортировки массивов в PHP существует несколько функций: sort - по возрастанию элементов, rsort - по убыванию элементов, asort - по возрастанию элементов с сохранением ключей, arsort - по убыванию элементов с сохранением ключей, ksort - по возрастанию ключей, krsort - по убыванию ключей, usort - по функции по элементам, uasort - по функции по элементам с сохранением ключей, uksort - по функции по ключам, natsort - натуральная сортировка.

Все эти функции изменяют сам массив - это значит, что результат не нужно никуда присваивать: поменяется сам массив.

Синтаксис: sort(массив).

Пример

В данном примере функция отсортирует массив по возрастанию элементов:

<?$a=[1,3,2,5,4];sort($a);print_r($a)?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) .

Функция array_rand

Функция array_rand возвращает случайный ключ из массива.

2-й необязательный параметр указывает, сколько случайных ключей следует вернуть. Если он не указан, возвращается 1 ключ, а если указан - заданное количество ключей в виде массива.

Синтаксис: array_rand(массив,[сколько ключей выбрать]).

Пример

Функция вернет случайный ключ из массива:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];$k=array_rand($a);print_r($k)?>

d.

Пример

Вернуть случайный элемент из массива, зная случайный ключ:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];$k=array_rand($a);print_r($a[$k])?>

3.

Пример

Задать 2-й параметр и теперь функция вернет массив из 3-х случайных ключей (3 ключа - так как 2-й параметр равен 3):

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];$k=array_rand($a,3);print_r($k)?>

Array ( [0] => a [1] => b [2] => d ) .

Функция shuffle

ПРОВЕРЬ!!!

Функция array_unique

Функция array_unique осуществляет удаление повторяющихся элементов (дублей) из массива.

Синтаксис: array_unique(массив).

Пример

Удалить дубли из массива:

<?$a=[1,1,1,2,2,3];$a=array_unique($a);print_r($a)?>

Array ( [0] => 1 [3] => 2 [5] => 3 ) .

Функция array_shift

Функция array_shift вырезает и возвращает 1-й элемент массива. При этом этот элемент исчезает из массива.

Синтаксис: array_shift(массив).

Пример

В данном примере функция вырезала 1-й элемент массива:

<?$a=[1,2,3,4,5];echo array_shift($a)?>

1.

Массив $a станет выглядеть так: Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 ) .

Функция array_pop

Функция array_pop вырезает и возвращает последний элемент массива. При этом этот элемент исчезает из массива.

Синтаксис: array_pop(массив).

Пример

В данном примере функция вырезала и вернула последний элемент массива:

<?$a=[1,2,3,4,5];echo array_pop($a)?>

5.

Массив $a станет выглядеть так: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) .

Функция array_unshift

Функция array_unshift добавляет элементы в начало массива.

Функция изменяет переданный массив, возвращает новое количество элементов в массиве.

Синтаксис: array_unshift(массив,какие элементы добавить).

Пример

Добавить в массив еще 2 элемента:

<?$a=[1,2,3];$n=array_unshift($a,'a','b');print_r($a);echo'<p>'.$n?>

Array ( [0] => a [1] => b [2] => 1 [3] => 2 [4] => 3 )

5.

В переменной $n будет лежать новое количество элементов массива: 5.

Функция array_push

Функция array_push добавляет элементы в конец массива.

Функция изменяет переданный массив, возвращает новое количество элементов в массиве.

Синтаксис: array_push(массив,какие элементы добавить).

Пример

Добавить элементы в конец массива:

<?$a=[1,2,3];$n=array_push($a,4,5);print_r($a);echo'<p>'.$n?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

5.

В переменной $n будет лежать новое количество элементов массива: 5.

Функция array_pad

Функция array_pad дополняет массив определенным значением до заданного размера.

Синтаксис: array_pad(массив,до какого размера заполнить,чем заполнять).

2-й параметр можно делать отрицательным, в этом случае массив будет дополнятся элементами не с конца, а с начала.

Пример

Заполнить массив нулями так, чтобы его размер стал 5 элементов (дополнить нулями с 3 элементов до 5):

<?$a=[1,2,3];$a=array_pad($a,5,0);print_r($a)?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 0 [4] => 0 ) .

Пример

А теперь в массиве уже есть 5 элементов, поэтому он ничем не заполнится:

<?$a=[1,2,3,4,5,6];$a=array_pad($a,5,0);print_r($a)?>

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ) .

Пример

Сделать 2-й параметр отрицательным. В этом случае массив заполнится сначала, а не с конца:

<?$a=[1,2,3];$a=array_pad($a,-5,0);print_r($a)?>

Array ( [0] => 0 [1] => 0 [2] => 1 [3] => 2 [4] => 3 ) .

Функция array_fill

Функция array_fill создает массив, заполненный элементами с определенным значением.

Синтаксис: array_fill(ключ 1-го элемента,сколько элементов,чем заполнять).

Пример

Заполнить массив 5-ю элементами с текстом 'x'. Так как 1-й параметр 0, то ключи начнут свою нумерацию с 0:

<?$a=array_fill(0,5,'x');print_r($a)?>

Array ( [0] => x [1] => x [2] => x [3] => x [4] => x )

Пример

Заполнить массив 5-ю элементами с текстом 'x'. Так как 1-й параметр 3, то ключи начнут свою нумерацию с 3:

<?$a=array_fill(3,5,'x');print_r($a)?>

Array ( [3] => x [4] => x [5] => x [6] => x [7] => x ) .

Пример

Сделать массив [['x','x','x'],['x','x','x'],['x','x','x']]:

<?$a=array_fill(0,3,array_fill(0,5,'x'));print_r($a)?>

Array ( [0] => Array ( [0] => x [1] => x [2] => x [3] => x [4] => x ) [1] => Array ( [0] => x [1] => x [2] => x [3] => x [4] => x ) [2] => Array ( [0] => x [1] => x [2] => x [3] => x [4] => x ) ) .

Пример

Сделать массив [['x','x','x'],['x','x','x'],['x','x','x']]:

<?$a=array_fill(1,3,array_fill(1,5,'x'));print_r($a)?>

Array ( [1] => Array ( [1] => x [2] => x [3] => x [4] => x [5] => x ) [2] => Array ( [1] => x [2] => x [3] => x [4] => x [5] => x ) [3] => Array ( [1] => x [2] => x [3] => x [4] => x [5] => x ) ) .

Функция array_fill_keys

Функция array_fill_keys создает массив и заполняет массив элементами с определенным значением так, чтобы весь массив был с одинаковыми элементами, но разными ключами. Ключи берутся из массива, передаваемого 1-м параметром.

Синтаксис: array_fill_keys(ключ 1-го элемента,чем заполнять).

Пример

Заполнить массив 5-ю элементами с текстом 'x' с ключами из массива ['a','b','c','d','e']:

<?$a=array_fill_keys(['a','b','c','d','e'],'x');print_r($a)?>

Array ( [a] => x [b] => x [c] => x [d] => x [e] => x ) .

Пример

<?$k=array(1,5,10,'b');$a=array_fill_keys($keys,'x');print_r($a)?>

Array ( [1] => x [5] => x [10] => x [b] => x ) .

Функция array_chunk

Функция array_chunk разбивает 1-мерный массив в 2-мерный. 1-м параметром она принимает массив, а 2-м - количество элементов в каждом подмассиве.

Синтаксис: array_chunk(массив,по сколько элементов).

Пример

Разбить массив по 2 элемента в подмассиве:

<?$a=['a','b','c','d'];print_r(array_chunk($a,2))?>

Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [0] => c [1] => d ) ) .

Результат: [['a','b'],['c','d']].

Пример

Разбить массив по 3 элемента в подмассиве. Обратите внимание на то, что в последнем подмассиве 2 элемента, а не 3, так как ему не хватило элементов:

<?$a=['a','b','c','d','e'];print_r(array_chunk($a,3))?>

Array ( [0] => Array ( [0] => a [1] => b [2] => c ) [1] => Array ( [0] => d [1] => e ) ) .

Результат: [['a','b','c'],['d','e']].

Функция array_count_values

Функция array_count_values производит подсчет количества всех значений массива. Возвращает ассоциативный массив, в котором ключами будут элементы массива, а значениями - их количество в массиве.

Синтаксис: array_count_values(массив).

Пример

Подсчитаем, сколько раз встречается каждый из элементов:

<?$a=['a','a','a','b','b','c'];print_r(array_count_values($a))?>

Array ( [a] => 3 [b] => 2 [c] => 1 ) .

Функция array_intersect

Функция array_intersect вычисляет пересечение массивов, возвращает массив из элементов, которые есть во всех массивах, переданных в функцию.

Синтаксис: array_intersect(массив,массив,массив,…).

Пример

Найти, какие элементы есть и в 1-м, и во 2-м массиве:

<?$a=array(1,2,3,4,5);$b=array(3,4,5,6,7);$r=array_intersect($a,$b);print_r($r)?>

Array ( [2] => 3 [3] => 4 [4] => 5 ) .

<?$a=array(1,2,3,4,5);$b=array(3,4,5,6,7);$r=array_intersect($b,$a);print_r($r)?>

Array ( [0] => 3 [1] => 4 [2] => 5 ) .

Функция array_diff

Функция array_diff возвращает массив из элементов, которые не являются общими для всех массивов, переданных в функцию.

Синтаксис: array_diff(массив,массив,массив,…).

Пример

Найти, какие элементы есть в 1-м массиве и при этом отсутствуют во 2-м:

<?$a=array(1,2,3,4,5);$b=array(3,4,5,6,7);$r=array_intersect($a,$b);print_r($r)?>

Array ( [0] => 1 [1] => 2 ) .

<?$a=array(1,2,3,4,5);$b=array(3,4,5,6,7);$r=array_intersect($b,$a);print_r($r)?>

Array ( [3] => 6 [4] => 7 ) .

Функция array_map

Функция array_map применяет заданную функцию ко всем элементам массива и возвращает измененный массив.

1-м параметром функция принимает имя функции, а 2-м - массив. Можно передавать дополнительные массивы 3-м и так далее параметрами.

Синтаксис: array_map(имя функции в кавычках,массив,[еще массивы через запятую]).

Пример

В данном примере функция array_map извлекла квадратный корень из каждого элемента массива с помощью функции sqrt и записала в новый массив:

<?$a=[1,4,9];$r=array_map('sqrt',$a);print_r($r)?>

Array ( [0] => 1 [1] => 2 [2] => 3 ) .

Практика

Примеры решения задач

Задача

Создайте массив, заполненный числами от 1 до 100. Найдите сумму элементов данного массива.

Решение: для начала создадим массив с числами от 1 до 100. Вручную это сделать будет очень сложно, поэтому воспользуемся функцией range:

<?$a=range(1,100)?>

Сумму элементов полученного массива найдем с помощью функции array_sum (можно использовать цикл foreach, как мы это делали раньше, но array_sum в данном случае гораздо удобнее и проще):

<?/*Найдем сумму элементов нашего массива:*/echo array_sum(range(1,100))?>

5050

Задача

Функция array_map

Дан массив с элементами 'a','b','c','d','e'. С помощью функции array_map сделайте из него массив 'A','B','C','D','E'.

Решение: с помощью функции array_map задача решается в 1 строчку - 1-м параметром передадим ей функцию strtoupper, а 2-м - массив, к каждому элементу которого мы хотим применить strtoupper:

<?$a=['a','b','c','d','e'];$a=array_map('strtoupper',$a);print_r($a)?>

Array ( [0] => A [1] => B [2] => C [3] => D [4] => E )

Задачи для решения

Работа с count

Дан массив $a. Подсчитайте количество элементов этого массива.

Дан массив $a. С помощью функции count выведите последний элемент данного массива.

Работа с in_array

Дан массив с числами. Проверьте, что в нем есть элемент со значением 3.

Работа с array_sum и array_product

Дан массив [1,2,3,4,5]*. Найдите сумму элементов данного массива.

Дан массив *. Найдите произведение (умножение) элементов данного массива.

Дан массив $arr. С помощью функций array_sum и count найдите среднее арифметическое элементов (сумма элементов делить на их количество) данного массива.

Работа с range

Создайте массив, заполненный числами от 1 до 100.

Создайте массив, заполненный буквами от 'a' до 'z'.

Создайте строку '1-2-3-4-5-6-7-8-9', не используя цикл. Показать подсказку.

Найдите сумму чисел от 1 до 100, не используя цикл.

Найдите произведение чисел от 1 до 10, не используя цикл.

Работа с array_merge

Даны 2 массива: 1-й с элементами 1,2,3, 2-й с элементами 'a','b','c'. Сделайте из них массив с элементами 1,2,3,'a','b','c'.

Работа с array_slice

Дан массив с элементами 1,2,3,4,5. С помощью функции array_slice создайте из него массив $result с элементами 2,3,4.

Работа с array_splice

Дан массив [1,2,3,4,5]*. С помощью функции array_splice преобразуйте массив в [1,4,5].

Дан массив *. С помощью функции array_splice запишите в новый массив элементы [2,3,4].

Дан массив *. С помощью функции array_splice сделайте из него массив [1,2,3,'a','b','c',4,5].

Дан массив *. С помощью функции array_splice сделайте из него массив [1,'a','b',2,3,4,'c',5,'e'].

Работа с array_keys, array_values, array_combine

Дан массив 'a'=>1,'b'=>2,'c'=>3'. Запишите в массив $keys ключи из этого массива, а в $values – значения.

Даны 2 массива: ['a','b','c'] и [1,2,3]. Создайте с их помощью массив 'a'=>1,'b'=>2,'c'=>3'.

Работа с array_flip, array_reverse

Дан массив 'a'=>1,'b'=>2,'c'=>3. Поменяйте в нем местами ключи и значения.

Дан массив с элементами 1,2,3,4,5. Сделайте из него массив с элементами 5,4,3,2,1.

Работа с array_search

Дан массив ['a','-','b','-','c','-','d']*. Найдите позицию 1-го элемента '-'.

Дан массив *. Найдите позицию 1-го элемента '-' и удалите его с помощью функции array_splice.

Работа с array_replace

Дан массив ['a','b','c','d','e']. Поменяйте элемент с ключом 0 на '!', а элемент с ключом 3 - на '!!'.

Работа с сортировкой

Для сортировки массивов в PHP существует несколько функций: sort - по возрастанию элементов, rsort - по убыванию элементов, asort - по возрастанию элементов с сохранением ключей, arsort - по убыванию элементов с сохранением ключей, ksort - по возрастанию ключей, krsort - по убыванию ключей, usort - по функции по элементам, uasort - по функции по элементам с сохранением ключей, uksort - по функции по ключам, natsort - натуральная сортировка. Все эти функции изменяют сам массив. Это значит, что результат не нужно никуда присваивать, поменяется сам массив.

Дан массив '3'=>'a','1'=>'c','2'=>'e','4'=>'b'. Попробуйте на нем различные типы сортировок.

Работа с array_rand

Дан массив с элементами 'a'=>1,'b'=>2,'c'=>3*. Выведите на экран случайный ключ из данного массива.

Дан массив *. Выведите на экран случайный элемент данного массива.

Работа с shuffle

Дан массив $a. Перемешайте его элементы в случайном порядке.

Заполните массив числами от 1 до 25 с помощью range, а затем перемешайте его элементы в случайном порядке.

Создайте массив, заполненный буквами от 'a' до 'z' так, чтобы буквы шли в случайном порядке и не повторялись.

Сделайте строку длиной 6 символов, состоящую из маленьких английских букв, расположенных в случайном порядке. Буквы не должны повторяться.

Работа с array_unique

Дан массив с элементами 'a','b','c','b','a'. Удалите из него повторяющиеся элементы.

Работа с array_shift, array_pop, array_unshift, array_push

Дан массив с элементами 1,2,3,4,5. Выведите на экран его 1-й и последний элемент, причем так, чтобы в исходном массиве они исчезли.

Дан массив с элементами 1,2,3,4,5. Добавьте ему в начало элемент 0, а в конец - элемент 6.

Дан массив с элементами 1,2,3,4,5,6,7,8. С помощью цикла и функций array_shift и array_pop выведите на экран его элементы в следующем порядке: 18273645. Показать решение.

Работа с array_pad, array_fill, array_fill_keys, array_chunk

Дан массив с элементами 'a','b','c'. Сделайте из него массив с элементами 'a','b','c','-','-','-'.

Заполните массив 10-ю буквами 'x'.

Создайте массив, заполненный целыми числами от 1 до 20. С помощью функции array_chunk разбейте этот массив на 5 подмассивов ([1,2,3,4]; [5,6,7,8] и т.д.).

Работа с array_count_values

Дан массив с элементами 'a','b','c','b','a'. Подсчитайте сколько раз встречается каждая из букв.

Работа с array_map

Дан массив с элементами 1,2,3,4,5. Создайте новый массив, в котором будут лежать квадратные корни данных элементов.

Дан массив с элементами 'php','htm'. Создайте новый массив, в котором из элементов будут удалены теги.

Дан массив с элементами ' a ',' b ',' с '. Создайте новый массив, в котором будут данные элементы без концевых пробелов.

Работа с array_intersect, array_diff

Дан массив с элементами 1,2,3,4,5 и массив с элементами 3,4,5,6,7. Запишите в новый массив элементы, которые есть и в том, и в другом массиве.

Дан массив с элементами 1,2,3,4,5 и массив с элементами 3,4,5,6,7. Запишите в новый массив элементы, которые не присутствуют в обоих массивах одновременно.

Задачи

Дана строка '1234567890'. Найдите сумму цифр из этой строки не используя цикл.

Создайте массив ['a'=>1,'b'=>2,…'z'=>26], не используя цикл. Показать подсказку.

Создайте массив вида [[1,2,3],[4,5,6],[7,8,9]], не используя цикл. Показать подсказку.

Дан массив с элементами 1,2,4,5,5. Найдите 2-й по величине элемент (отсчет с 0). В нашем случае это будет 4.

Содержание

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting