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

Урок 15. Работа с массивами в PHP

Содержание

Теория

Заполнение массивов

Заполнить массив 8 'x':

<?$a=[];for($i=0;$i<8;i=i++){$a[]='x';}var_dump($a)//Выведет ['x','x','x','x','x','x','x','x']?>

Заполнить массив числами от 1 до 8:

<?$a=[];for($i=1;$i<=8;i++){$a[]=$i;}var_dump($a)//Выведет [1,2,3,4,5,6,7,8]?>

Переворот ассоциативного массива

Поменять ключи и значения в ассоциативный массиве, например, из ['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5] сделать [1=>'a',2=>'b',3=>'c',4=>'d',5=>'e'].

Перебор циклом foreach исходный массив и создать при этом новый ассоциативный массив r. Ключами нового массива сделать элементы старого, а значениями нового массива - ключи старого:

<?$a=['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];$r=[];foreach($a as$k=>$e){$r[$e]=$k;}var_dump($r)//Выведет [1=>'a',2=>'b',3=>'c',4=>'d',5=>'e']?>

array(5) { [1]=> string(1) "a" [2]=> string(1) "b" [3]=> string(1) "c" [4]=> string(1) "d" [5]=> string(1) "e" }

Подсчет количества элементов

Дан массив ['a','b','c','a','a','b']. Подсчитать количество одинаковых элементов в этом массиве и сделать результат в виде массива ['a'=>3,'b'=>2,'c'=>1].

Для решения сделать массив c с начальным значением ['a'=>0,'b'=>0,'c'=>0]. Перебирать массив циклом и увеличивать соответствующее значение в объекте c. К примеру, если текущий элемент массива - 'a', то увеличить c['a'] на 1 (c['a']++). Только вместо 'a' подставлятся текущий элемент массива (c[$e]++):

<?$a=['a','b','c','a','a','b'];$c=['a'=>0,'b'=>0,'c'=>0];foreach($ as$e){$c[$e]++;}var_dump($c)//Выведет ['a'=>3,'b'=>2,'c'=>1]?>

То, что массив c имеет изначальное значение ['a'=>0,'b'=>0,'c'=>0], неудобно, т.к. обычно неизвестно, какие элементы есть в массиве.

Пусть массив c формируется автоматически так: если такого элемента в c нет, то ему следует присвоить значение 1, а если есть, увеличить значение на 1:

<?$a=['a','b','c','a','a','b'];$c=[];foreach($a as$e){if(!isset($c[$e])){$c[$e]=1;}else{$c[$e]++;}}var_dump($c)//Выведет ['a'=>3,'b'=>2,'c'=>1]?>

array(3) { ["a"]=> int(3) ["b"]=> int(2) ["c"]=> int(1) }

Переворот массива

Из массива ['a','b','c','d','e'] сделать ['e','d','c','b','a']. Для этого перебирается исходный массив с конца и его элементы записываются в новый массив (они будут идти в обратном порядке):

<?$a=['a','b','c','d','e'];$r=[];for($i=$a.length-1;$i>=0;i--){$r[]=$e;}var_dump($r)//Выведет ['e','d','c','b','a']?>

Перебор многомерных массивов

Дан 2-мерный массив: $a=[[1,2,3],[4,5],[6]]

Вывести все его элементы. Для этого запустить 2 вложенных друг в друга цикла:

<?$a=[[1,2,3],[4,5],[6]];foreach($a as$e){foreach($e as$s){echo$s;}}?>

123456

Практика

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

Заполнение массивов

Задача 1

Заполнить массив: в 1-й элемент записать 'x', во 2-й 'xx', в 3-й 'xxx' и т.д.

С помощью 2 вложенных циклов заполнить массив: в 1-й элемент записать '1', во 2-й '22', в 3-й '333' и т.д.

Сделать функцию a, которая будет заполнять массив заданными значениями. 1-м параметром функция принимает значение, которым заполнять массив, а 2-м - сколько элементов должно быть в массиве. Пример: a('x',5) сделает массив ['x','x','x','x','x'].

Дан массив с числами. Узнайть, сколько элементов с начала массива надо сложить, чтобы в сумме получилось >8. Считайть, что в массиве есть нужное количество элементов.

Многомерные массивы

Дан 2-мерный массив с числами [[1,2],[3],[4]]. Найти сумму элементов этого массива. Массив может быть произвольным.

<?$a=[[1,2],[3],[4]];foreach($a as$b){foreach($b as$c){$d=$d+$c;echo'+'.$c;}};echo'='.$d?>

+1+2+3+4=10

Дан 3-мерный массив с числами [[[1,2],[3,4]],[[5,6],[7,8]]]. Найти сумму элементов этого массива. Массив может быть произвольным.

<?$a=[[[1,2],[3,4]],[[5,6],[7,8]]];$e=0;foreach($a as$b){foreach($b as$c){foreach($c as$d){$e=$e+$d;echo'+'.$d;}}};echo'='.$e?>

+1+2+3+4+5+6+7+8=36

С помощью 2 циклов создать массив [[1,2,3],[4,5,6],[7,8,9]].

Содержание

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

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