Понимание массивов в PHP
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-функций для работы с массивами.



