Полный цикл в digital

Массивы

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

Есть несколько способов определения массивов. Первый способ представляет использование функции array():

$numbers = array();

В данном случае определяется пустой массив $numbers.

Второй способ представляет использование квадратных скобок []:

$numbers = [];

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

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

Аналогичное определение массива с помощью функции array():

$numbers = array(1, 2, 3, 4);

В качестве элементов массива могут выступать объекты любого типа.

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

Для обычных массивов ключ представляет число. Числовые ключи еще называют индексами. Нумерация индексов начинается с нуля, то есть первый элемент массива имеет индекс 0, второй элемент - индекс 1 и так далее.

Например, обратимся к третьему элементу массива:

<?
$numbers = [1, 4, 9, 16];
echo $numbers[2]; // 9

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

Таким образом мы получаем значение элемента массива. Но также мы можем его изменить:

<?
$numbers = [1, 4, 9, 16];
$numbers[1] = 6;
echo $numbers[1]; // 6

При этом нужно учитывать количество элементов массива. Так, мы не можем обратиться к элементу с несуществующим индексом:

<?
$numbers = [1, 4, 9, 16];
echo $numbers[4]; // 6

В данном случае в массиве $numbers всего 4 элемента, поэтому индексом последнего элемента будет 3. Таким образом, элемента с индексом 4 в массиве не существует, и при попытке получить его значение echo $numbers[4] PHP нам покажет предупреждение.

Тем не менее если мы хотим установить элемент по еще не существующему индексу, мы можем это сделать:

<?
$numbers = [1, 4, 9, 16];
$numbers[5] = 76;
echo $numbers[5]; // 76

Здесь устанавливается элемент с индексом 5. После установки мы можем получать его значение. При этом элемента с индексом 4 по прежнему не существует.

Для добавления нового элемента в массив мы можем, как в примере выше, просто установить новый элемент по еще не установленному индексу. Но есть и другой способ:

<?
$numbers = [1, 4, 9, 16];
$numbers[] = 25;
echo $numbers[4]; // 25

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

Чтобы получить полное наглядное представление о том, как в конкретном массиве сопоставляются ключи и значения элементов, можно использовать функцию print_r, в которую в качестве параметра передается массив:

<?
$numbers = [1, 4, 9, 16];
$numbers[] = 25;
print_r($numbers);

Вывод скрипта:

Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

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

<?
$numbers[] = 20;
$numbers[] = 120;
$numbers[] = 720;
print_r($numbers);  // Array ( [0] => 20 [1] => 120 [2] => 720 )

Оператор =>

Оператор => позволяет сопоставить ключ с определенным значением. Хотя при определении массива выше нам не требовался подобный оператор, тем не менее мы можем его применять. Например, следующий массив:

$numbers = [1, 4, 9, 16];

Будет аналогичен следующему массиву:

$numbers = [0=>1, 1=>4, 2=>9, 3=>16];
// $numbers = array(0=>1, 1=>4, 2=>9, 3=>16);

Каждый элемент определяется в следующем формате: ключ => значение

В дальнейшем мы также можем обращаться к элементам этого массива.

Этот оператор может понадобится, если мы хотим переопределить порядок индексов. Так, по умолчанию нумеация индексов начинается с нуля и каждый следующий элемент имеет индекс предыдущего элемента + 1. Оператор => же позволяет определить свои индексы вручную для элементов, необязательно с нуля и необязательно по порядку:

$numbers = [1=> 1, 2=> 4, 5=> 25, 4=> 16];
echo $numbers[2]; // 4

Также мы можем задать индекс лишь для одного элемента, тогда для последующих элементов индекс автоматически будет увеличиваться на единиицу:

$numbers = [4=> 16, 25, 36, 49, 64];
print_r($numbers);

В данном случае индексация начинается с числа 4 - это индекс элемента 16. Тогда для элемента 25 индексом будет число 5 и так далее.

Array ( [4] => 16 [5] => 25 [6] => 36 [7] => 49 [8] => 64 )

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

Для перебора массива мы можем применять стандартный метод for:

<?
$users = ["Tom", "Sam", "Bob", "Alice"];
$num = count($users);
for($i=0; $i < $num; $i++)
{
echo "$users[$i] <br />";
}

В данном случае мы не определяем вручную индексы элементов, поэтому индексация начинается с нуля с увеличением на единиицу для последующего элемента. Поэтому мы можем в цикле через переменную $i передавать индекс, начиная с нуля. Единственная трудность может заключаться в том, как определить индекс конечного элемента, чтобы установить потолок для переменной $i. В этом случае мы можем с помощью встроенной функции count() получить длину массива. Эта функция в качестве параметра принимает массив и возвращает его длину.

Tom
Sam
Bob
Alice

Функция print_r

print_r() выводит пригодную для чтения человеком информацию о переменной. Если задано string, integer или float, печатается само значение. Если задан array, значения будут представлены в формате с показом ключей и элементов.

<?
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
print_r ($a);

Получим вот такой удобный вывод

Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг