В этой статье вы познакомитесь с основами массивов в 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
В этом разделе мы обсудим различные типы массивов, которые вы можете использовать в 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
|
Также вы можете использовать следующий синтаксис.
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
Функция 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
?>
|
Функция is_array
Это одна из самых полезных функций для работы с массивами. Он используется для проверки, является ли переменная массивом или другим типом данных.
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
функция 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
Функция 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
является строка-разделитель (строка, на которую вы разбиваете), а вторым аргументом является сама строка.
Функция implode
Это противоположно функции 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
Функция 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
Функция 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 для работы с массивами.