Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Уроки PHP - урок 10 - Массивы

08/12/2019, by Ivan

До этого урока мы рассматривали только числовые и строковые переменные, а в этом мы познакомимся с массивами. Массивы могут включать в себя как числовые, так и строковые переменные. Поэтому собственно они и называются массивами.

Суть массива в следующем, есть множество ключей массива и есть множество значений массива. Каждому ключу массива принадлежит одно значение. Например у нас есть ключи 1,2,3, то значения могут быть 4, 'Hello World', true. Записываются массивы так же как и переменные, со знаком доллара:

$tree = array();

Только для создания массива мы используем функцию array().

 

На самом деле объявлять массив, также как и объявлять переменные в PHP необязательно. Но для понимания чужого кода всегда лучше видеть откуда появляются переменные и какого они типа.

А теперь определим указанный выше нами массив:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  ); 
?>

Обратите внимание на синтаксис. Сначала все идет как у переменной, мы присваиваем значение. Потом идет ключевое слово array, которое означает, что переменная будет массивом. Дальше в круглых скобках идут пары ключ/значение.

Причем пишутся таким вот образом:

array(
  ключ1 => значение1,
  ключ2 => значение2,
);

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

Записать массив можно и встрочку:

<?php
  $tree = array(1 => 4, 2 => 'Hello World', 3 => true,); 
?>

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

Распечатать массив на экран можно с помощь функции print_r(). В отличие от функции print, print_r использует скобки.

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  ); 
  print_r($tree);
?>

В результате мы распечатаем массив на экран

Array ( [1] => 4 [2] => Hello World [3] => 1 )

Если мы добавим тег <pre>, то вид распечатанного массива будет лучше:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  ); 
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

Получиться нечто такое:

Array
(
    1 => 4,
    2 => 'Hello World',
    3 => true,
) 

Теперь когда мы научились создавать массивы давайте попробуем извлекать из массивов информацию:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  ); 
  print $tree[2];
?>

Таким образом мы извлекли второй элемент массива 'Hello World' и вывели его на экран. Чтобы обратиться к значению какого-то ключа нужно написать имя переменной массива, а дальше в квадратных скобках этот ключ. Так можно вызвать и $tree[1], $tree[3].

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

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  ); 
  $tree[] = 'Еще один элемент';
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

Таким образом мы выведем вот такой массив:

Array
(
    [1] => 4
    [2] => Hello World
    [3] => 1
    [4] => Еще один элемент
)

Как вы видете указав пустой ключ PHP добавляет следующий по счету номер ключа. Но мы можем добавить ключ не по порядковому числу, а сразу указав ключ в квадратных скобках:

 

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  ); 
  $tree[6] = 'Другой элемент';
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

Получится, что у нас есть ключи 1,2,3,6, а ключей 4,5 нет. Поэтому стоить запомнить, что если в массиве встречаются ключи например 103, 105, то это не значит что в массиве есть ключ 104. Проверить или нет можно с помощью функции

if(empty($tree[104])){

}

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

 

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    3 => true,
  ); 
  $tree[3] = 'Другой элемент';
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

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

Также еще стоит обратить внимание на то, что ключом массива может быть и текст:

<?php
  $tree = array(
    1 => 4,
    2 => 'Hello World',
    'key3' => true,
  ); 
  print '<pre>';
  print_r($tree);
  print '</pre>';
?>

В этом случае мы пишем значение ключа в кавычках (одинарных или двойных). Также мы вызываем значение массива:

print $tree['key3'];

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

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

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

<?php
$multi = array();
$multi[1][1] = 1;
$multi[1][2] = 2;
$multi[1][3] = 3;
$multi[2][1] = 2;
$multi[2][2] = 4;
$multi[2][3] = 6;
$multi[3][1] = 3;
$multi[3][2] = 6;
$multi[3][3] = 9;
print '<pre>';
print_r($multi);
print '</pre>';
?>

Если в одномерном массиве у нас один ключ, то в двумерном у нас их два. В трехмерном массиве - три ключа и так далее. Причем порядок ключей имеет значение, то есть $multi[1][3] и $multi[3][1] - это разные числа.

<?php
$multi = array();
$multi[1][3] = 3;
$multi[3][1] = 'Hello, World!';
print '<pre>';
print_r($multi);
print '</pre>';
?>

Задавать массивы можно сразу для многих значений:

<?php
$multi = array(
  1 => array(
    1 => 1,
    2 => 2,
    3 => 3,
  ),
  2 => array(
    1 => 2,
    2 => 4,
    3 => 6,
  ),
  3 => array(
    1 => 3,
    2 => 6,
    3 => 9,
  ),
);
print '<pre>';
print_r($multi);
print '</pre>';
?>

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