Сейчас мы с вами разберем некоторые приемы при работе с обычными и многомерными массивами. Давайте приступим.

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

Давайте заполним массив десятью иксами 'x':

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

Давайте теперь заполним массив числами от 1 до 10:

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

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

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

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

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

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

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

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

Только вместо 'a' следует подставлять текущий элемент массива, вот так: count[$elem]++. Давайте напишем окончательный код:

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

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

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

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

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

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

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

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

Пусть дан следующий двухмерный массив:

<?php
	$arr = [[1, 2, 3, 4, 5], [6, 7, 8], [9, 10]];
?>

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

<?php
	$arr = [[1, 2, 3, 4, 5], [6, 7, 8], [9, 10]];
	
	foreach ($arr as $elem) {
		foreach ($elem as $subElem) {
			echo $subElem;
		}
	}
?>