Marlin онлайн-платформа

Массивы

Как мы выяснили, массив - это контейнер с ячейками для хранения данных. В массивах можно хранить данные всех типов, а массивы, в свою очередь, можно хранить в переменных. 
Существуют также многомерные, или, как их ещё называют, вложенные массивы.

Например:

$array = ['string', 1, 2.5, true];

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

$array = [
		'numbers' => [1, 2, 3, 4, 5], 
		'strings' => 'qwerty',
		'types' =>
				[
				'bool' => true,
				'int' => 7,
				'str' => 'foo'
				]
		];


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

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

Например:

$colors = ['red', 'green', 'blue', 'yellow'];

$months = ['January', 'February', 'March', 'April', 'May'];

$numbers = [1, 2, 3, 4];

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

Ассоциативные массивы используются там, где нужно описать какой-либо предмет или явление, и характеристики этого предмета по смыслу различны. Обратите внимание, что ключом такого массива может являться только строка.

Например:

$person = [
			'name' => 'John',
			'surname' => 'Doe',
			'age' => 27	
		  ];

$cat = [
		'color' => 'black',
		'name' => 'Boris',
		'weight' => 4
	   ];

Теперь немного углубимся в особенности синтаксиса.

Как быть, если мы хотим поменять значение существующего элемента? Для этого нужно обратиться к этому элементу по ключу и присвоить ему новое значение:

$color[1] = 'black';

$cat['weight'] = 5;

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

$color[4] = 'white';

$cat['eyes'] = 'green';


При работе с элементами многомерного массива используют такой же подход, только индекс указывают не один, а столько, сколько того требует уровень вложенности массива:

$cat = [
		'color' => 'black',
		'name' => 'Boris',
		'weight' => 4,
		'eyes' => 'green',
		'actions' => ['sleep', 'eat', 'bite']
		];

$cat['actions'][3] = 'play';

echo($cat['actions'][3]);  // выведет play

ПОЯСНЕНИЯ И ПОЛЕЗНАЯ ИНФОРМАЦИЯ

  • Существует ещё несколько способов создания или заполнения массива: 

Вместо перечисления всех элементов в квадратных скобках, можно по очереди присваивать отдельным ключам их значения, даже если массив не был до этого объявлен:

$arr[0] = 1;
$arr[1] = 2;

$arr['month'] = 'June';

 

Ключи можно вообще не писать, тогда PHP автоматически проставит их сам и добавит новый элемент в конец массива:

$arr[] = 3;
$arr[] = 4;

 

Можно так же создать пустой массив, то есть -  просто объявить его:

$arr = [];
$arr = array();

 

  • Значения отдельных элементов можно переопределять сколько угодно раз, для этого нужно просто указать нужный ключ и присвоить ему новое значение:
$arr[1] = 5;
$arr['month'] = 'January';

 

  • Удаляют элемент с помощью функции unset(), передав ей нужный ключ:
unset($arr[1]);

 

  • С помощью echo() можно посмотреть содержимое только одного конкретного элемента, но если нам нужно будет узнать всё содержимое массива, этот вариант не подойдёт. В такой ситуации нужно использовать print_r() или var_dump() - так мы выведем на экран все элементы с их значениями.

Задание

Решите задачи:

  1.  Создайте массив $arr = ['a', 'b', 'c', 'd'] и с его помощью выведите на экран строку 'a + b, c + d'.
  2.  Заполните массив $arr числами от 1 до 5. Не объявляйте массив, а просто заполните его присваиванием $arr[] = новое значение.
  3.  Создайте массив $arr = ['a' => 1, 'b' => 2, 'c' => 3]. Найдите сумму элементов этого массива.
  4.  Создайте двухмерный массив. Первые два ключа - это 'ru' и 'en'. Пусть первый ключ содержит элемент, являющийся массивом названий дней недели по-русски, а второй - по-английски. Выведите с помощью этого массива понедельник по-русски и среду по английски (пусть понедельник - это первый день).

    Пусть теперь в переменной $lang хранится язык (она принимает одно из значений или 'ru', или 'en' - либо то, либо то), а в переменной $day - номер дня. Выведите словом день недели, соответствующий переменным $lang и $dayТо есть: если, к примеру, $lang = 'ru' и $day = 3 - то выведем 'среда'

Дополнительная секция

Вопрос-ответ Обсуждение