1. Code
  2. Coding Fundamentals

Понимание массивов в PHP

Scroll to top

Russian (Pусский) translation by Alexey Pyltsyn (you can also view the original English article)

В этой статье вы узнаете основы массивов в PHP. Вы узнаете, как создать массив и как использовать ассоциативные и многомерные массивы, а еще увидите много примеров массивов в действии.

Что такое массив?

В PHP массив — это структура данных, которая позволяет хранить несколько элементов в одной переменной. Эти элементы хранятся в виде пар "ключ-значение". Фактически, когда нужно сохранить список элементов можно использовать массив. Почти всегда все элементы массива имеют одинаковый тип данных.

В качестве примера предположим, вы хотите сохранить имена фруктов. Без использования массива вы бы скорее всего создали несколько переменных для хранения имен разных фруктов. С другой стороны если вы используете массив для хранения имен фруктов, он может выглядеть следующим образом:

1
<?php
2
$array_fruits = array('Apple', 'Orange', 'Watermelon', 'Mango');
3
?>

Как вы можете видеть, мы использовали переменную $array_fruits для хранения имен разных фруктов. Важная деталь, про которую нужно упомянуть – позже вы можете добавить больше элементов в переменную с массивом $array_fruits.

Есть много способов для манипулированием значениями в переменной массива — мы узнаем про них немного позже в этой статье.

Как создать массив

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

Когда дело доходит до инициализации массива, есть несколько разных способов сделать это. В большинстве случаев языковая конструкция array() служит для создания нового массива.

1
<?php
2
$array = array();
3
?>

В предыдущем фрагменте кода, переменная $array инициализируется пустым массивом.

Начиная с PHP 5.4 можно также использовать короткий синтаксис для инициализации массива.

1
<?php
2
$array = [];
3
?>

Теперь давайте посмотрим, как добавлять элементы в массив.

1
<?php
2
$array = [];
3
$array[] = 'One';
4
$array[] = 'Two';
5
$array[] = 'Three';
6
echo '<pre>';
7
print_r($array);
8
?>

Приведенный выше код выведет следующее:

1
Array
2
(
3
    [0] => One
4
    [1] => Two
5
    [2] => Three
6
)

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

Конечно можно также создать массив с уже добавленными значениями. Это наиболее быстрый способ объявить массив, если вы уже знаете, какие значения в нем будут.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
?>

Как получить доступ к элементам массива

В предыдущем разделе мы обсуждали способы инициализации переменной массива. В этом разделе мы рассмотрим несколько различных способов доступа к элементам массива.

Первый очевидный способ доступа к элементам массива – получить их по ключу или индексу.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
4
// get the first element of the $array array

5
echo $array[0];
6
echo "<br>";
7
8
// get the second element of the $array array

9
echo $array[1];
10
echo "<br>";
11
12
// get the third element of the $array array

13
echo $array[2];
14
echo "<br>";
15
?>

Приведенный код ваше выведет следующее:

1
One
2
Two
3
Three

Более чистый способ написать приведенный выше код — это использовать цикл foreach для итерации по элементам массива.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
4
foreach ($array as $element) {
5
  echo $element;
6
  echo '<br>';
7
}
8
?>

Фрагмент кода выше даст такой же результат, но для его достижения потребовалось гораздо меньше кода.

Аналогично, вы можете также использовать цикл for для итерации по элементам массива.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
$array_length = count($array);
4
5
for ($i = 0; $i < $array_length; ++$i) {
6
  echo $array[$i];
7
  echo '<br>';
8
}
9
?>

В данном случае с помощью цикла for мы перебираем каждый индекс в массиве, а затем выводим значение, хранящееся в этом индексе. В этом примере кода мы использовали одну из наиболее важных функций, которую вы в конечном итоге будете использовать при работе с массивами: count. Она используется для подсчета, сколько элементов находится в массиве.

Типы массивов в PHP

В этом разделе мы рассмотрим различные типы массива, которые можно использовать в PHP.

Численно-индексированные массивы

Массив с числовым индексом относится к категории индексированных массивов. На самом деле примеры, которые мы рассматривали до этого момента – это индексированные массивы.

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

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
?>

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

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

1
<?php
2
$array = [];
3
$array[0] = 'One';
4
$array[1] = 'Two';
5
$array[2] = 'Three';
6
?>

Ассоциативные массивы

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

Давайте посмотрим, как создать ассоциативный массив.

1
<?php
2
$employee = [
3
  'name' => 'John',
4
  'email' => 'john@example.com',
5
  'phone' => '1234567890',
6
];

В качестве альтернативы можно также использовать следующий синтаксис.

1
<?php
2
$employee = [];
3
$employee['name'] = 'John';
4
$employee['email'] = 'john@example.com';
5
$employee['phone'] = '1234567890';
6
?>

Для доступа к значениям ассоциативного массива, можно использовать цикл foreach, либо индекс.

1
<?php
2
$employee = [
3
  'name' => 'John',
4
  'email' => 'john@example.com',
5
  'phone' => '1234567890',
6
];
7
8
// get the value of employee name

9
echo $employee['name'];
10
11
// get all values

12
foreach ($employee as $key => $value) {
13
  echo $key . ':' . $value;
14
  echo '<br>';
15
}
16
?>

Как вы можете видеть, в данном примере мы получили название через непосредственное обращение по ключу, а затем мы использовали цикл foreach для получения всех пар "ключ-значение" в массиве.

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

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

Давайте посмотрим на пример.

1
<?php
2
$employee = [
3
  'name' => 'John',
4
  'email' => 'john@example.com',
5
  'phone' => '1234567890',
6
  'hobbies' => ['Football', 'Tennis'],
7
  'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw']
8
];
9
?>

Как вы можете видеть, ключ hobbies в массиве $employee содержит массив хобби. Кроме того, в ключе profiles находится ассоциативный массив различных профилей.

Давайте посмотрим, как можно получить значения многомерного массива.

1
<?php
2
$employee = [
3
  'name' => 'John',
4
  'email' => 'john@example.com',
5
  'phone' => '1234567890',
6
  'hobbies' => ['Football', 'Tennis'],
7
  'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw']
8
];
9
10
// access hobbies

11
echo $employee['hobbies'][0];
12
// Football

13
14
echo $employee['hobbies'][1];
15
// Tennis

16
17
// access profiles

18
echo $employee['profiles']['facebook'];
19
// johnfb

20
21
echo $employee['profiles']['twitter'];
22
// johntw

23
?>

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

Некоторые полезные функции по работе с массивами

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

Функция count

Функция count используется для подсчета количества элементов в массиве. Это часто полезно, если вы хотите выполнить итерацию массива с циклом for.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
4
// print the number of elements in the array

5
echo count($array);
6
7
// the above code should output

8
3
9
?>

Функция is_array

Это одна из наиболее полезных функций для работы с массивами. Она используется для проверки, хранится ли в переменной массив или другой тип данных.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
4
// check if the variable is an array

5
if (is_array($array))
6
{
7
  // perform some array operation

8
}
9
?>

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

Функция in_array

Если вы хотите проверить, существует ли элемент в массиве, то функция in_array как раз предназначена для этого.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
4
// check if a variable is an array

5
if (in_array('One', $array))
6
{
7
  echo 'Yes';
8
}
9
else
10
{
11
  echo 'No';
12
}
13
?>

Первый аргумент функции in_array — элемент, который вы хотите проверить, а вторым аргументом является сам массив.

Функция explode

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

1
<?php
2
$string = "One,Two,Three";
3
4
// explode a string by comma

5
$array = explode(",", $string);
6
7
// output should be an array

8
echo '<pre>';
9
print_r($array);
10
11
// output

12
/*Array

13
(

14
    [0] => One

15
    [1] => Two

16
    [2] => Three

17
)*/
18
?>

Первый аргумент функции explode это строка с разделителем (строка, по которой будет разбита переданная строка), а второй аргумент это сама строка.

Функция implode

Это противоположность функции explode — переданный массив и строка, по которой будет произведено объединение, и функция implode создаст строку путем объединения всех элементов массива между ними с помощью строки объединения, указанной в первом параметре.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
4
$string = implode(",", $array);
5
6
// output should be a string

7
echo $string;
8
9
// output: One,Two,Three

10
?>

Первый аргумент функции implode является строкой объединения, а вторым аргументом является массив для объединения.

Функция array_push

Функция array_push используется для добавления новых элементов в конец массива.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
array_push($array, 'Four');
4
5
echo '<pre>';
6
print_r($array);
7
8
// output

9
/*Array

10
(

11
    [0] => One

12
    [1] => Two

13
    [2] => Three

14
    [3] => Four

15
)*/
16
?>

Первый аргумент это массив, а следующие за ним аргументы это элементы, которые будут добавлены в конец массива.

Функция array_pop

Функция array_pop удаляет элемент из конца массива.

1
<?php
2
$array = ['One', 'Two', 'Three'];
3
$element = array_pop($array);
4
5
echo '<pre>';
6
print_r($array);
7
8
// output

9
/*Array

10
(

11
    [0] => One

12
    [1] => Two

13
)*/
14
?>

Функция array_pop возвращает элемент, который удаляется из массива, так что вы можете сохранить его в переменную. Наряду с array_push эта функция полезна для реализации структур данных, таких как стеки.

Заключение

Это все, что вам нужно для начала работы с массивами в PHP. Вы узнали, как создавать массивы и получать элементы из них. Вы теперь знаете про различные типы массивов в PHP, и посмотрели в действии на некоторые из наиболее полезных встроенных PHP-функций для работы с массивами.