Статьи

Понимать массивы в PHP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Приведенный выше фрагмент должен дать следующий результат:

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

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

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

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

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?php
$array = [‘One’, ‘Two’, ‘Three’];
 
// get the first element of the $array array
echo $array[0];
echo «<br>»;
 
// get the second element of the $array array
echo $array[1];
echo «<br>»;
 
// get the third element of the $array array
echo $array[2];
echo «<br>»;
?>

Приведенный выше фрагмент должен дать следующий результат:

1
2
3
One
Two
Three

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

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

Приведенный выше фрагмент кода должен выдавать тот же результат, и он требует гораздо меньше кода.

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

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

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

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

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

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

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

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

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

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

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

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

1
2
3
4
5
6
<?php
$employee = [
  ‘name’ => ‘John’,
  ’email’ => ‘[email protected]’,
  ‘phone’ => ‘1234567890’,
];

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

1
2
3
4
5
6
<?php
$employee = [];
$employee[‘name’] = ‘John’;
$employee[’email’] = ‘[email protected]’;
$employee[‘phone’] = ‘1234567890’;
?>

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?php
$employee = [
  ‘name’ => ‘John’,
  ’email’ => ‘[email protected]’,
  ‘phone’ => ‘1234567890’,
];
 
// get the value of employee name
echo $employee[‘name’];
 
// get all values
foreach ($employee as $key => $value) {
  echo $key .
  echo ‘<br>’;
}
?>

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

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

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

1
2
3
4
5
6
7
8
9
<?php
$employee = [
  ‘name’ => ‘John’,
  ’email’ => ‘[email protected]’,
  ‘phone’ => ‘1234567890’,
  ‘hobbies’ => [‘Football’, ‘Tennis’],
  ‘profiles’ => [‘facebook’ => ‘johnfb’, ‘twitter’ => ‘johntw’]
];
?>

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$employee = [
  ‘name’ => ‘John’,
  ’email’ => ‘[email protected]’,
  ‘phone’ => ‘1234567890’,
  ‘hobbies’ => [‘Football’, ‘Tennis’],
  ‘profiles’ => [‘facebook’ => ‘johnfb’, ‘twitter’ => ‘johntw’]
];
 
// access hobbies
echo $employee[‘hobbies’][0];
// Football
 
echo $employee[‘hobbies’][1];
// Tennis
 
// access profiles
echo $employee[‘profiles’][‘facebook’];
// johnfb
 
echo $employee[‘profiles’][‘twitter’];
// johntw
?>

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

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

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

1
2
3
4
5
6
7
8
9
<?php
$array = [‘One’, ‘Two’, ‘Three’];
 
// print the number of elements in the array
echo count($array);
 
// the above code should output
3
?>

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

1
2
3
4
5
6
7
8
9
<?php
$array = [‘One’, ‘Two’, ‘Three’];
 
// check if the variable is an array
if (is_array($array))
{
  // perform some array operation
}
?>

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
<?php
$array = [‘One’, ‘Two’, ‘Three’];
 
// check if a variable is an array
if (in_array(‘One’, $array))
{
  echo ‘Yes’;
}
else
{
  echo ‘No’;
}
?>

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
$string = «One,Two,Three»;
 
// explode a string by comma
$array = explode(«,», $string);
 
// output should be an array
echo ‘<pre>’;
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
    [2] => Three
)*/
?>

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

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

01
02
03
04
05
06
07
08
09
10
<?php
$array = [‘One’, ‘Two’, ‘Three’];
 
$string = implode(«,», $array);
 
// output should be a string
echo $string;
 
// output: One,Two,Three
?>

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?php
$array = [‘One’, ‘Two’, ‘Three’];
array_push($array, ‘Four’);
 
echo ‘<pre>’;
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
    [2] => Three
    [3] => Four
)*/
?>

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

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
$array = [‘One’, ‘Two’, ‘Three’];
$element = array_pop($array);
 
echo ‘<pre>’;
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
)*/
?>

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

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