PHP поддерживает скалярные и составные типы данных. В этой статье мы обсудим один из составных типов: массивы. Массив представляет собой набор значений данных, организованных как упорядоченный набор пар ключ-значение.
В этой статье говорится о создании массива, добавлении элементов в массив. Есть много встроенных функций, которые работают с массивами в PHP, потому что массивы являются распространенными и полезными для использования. Например, если вы хотите отправить письмо на более чем один адрес электронной почты, вы можете хранить адреса электронной почты в массиве, а затем делать цикл по массиву, отправляя сообщения на адрес электронной почты, взятый из массива.
Индексированные и ассоциативные массивы
Есть два вида массивов в PHP: индексные и ассоциативные. Ключи индексированного массива — целые числа, начиная с 0. Индексированные массивы используются, когда вам требуется конкретное положение в массиве. Ассоциативные массивы ведут себя как две колонки таблицы. Первый столбец является ключом, который используется для доступа к значению (второму столбцу).
PHP внутренне хранит все массивы в качестве ассоциативных массивов, так что единственное различие между ассоциативными и индексированными массивами является то, что появляются ключи. Некоторые функции предусмотрены в основном для использования с индексированными массивами, поскольку они предполагают, что у вас ключи являются последовательными целыми числами, начиная с 0. В обоих случаях, ключи являются уникальными — то есть, вы не можете иметь два элемента с одинаковым ключом, независимо от того, является ли ключ строкой или целым числом.
В PHP массивы имеют внутренний порядок своих элементов, который не зависит от ключей и значений, и есть функции, которые можно использовать для обхода массивов на основе этого внутреннего порядка.
Определение элементов в массива
Вы можете получить доступ к конкретным значениям из массива, используя имя массива, за которым следует ключ элемента (иногда называемый индекс) в квадратных скобках:
$age['Fred']; $shows[2];
Ключ может быть строкой или целым числом. Строковые значения в виде чисел (без ведущих нулей) рассматриваются, как целые числа. Таким образом, $array[3] и $array[‘3’] ссылаются на один и тот же элемент, но $array[’03’] ссылается на другой элемент. Отрицательные числа так же могут быть использованы в качестве ключей, но они не определяют позиции с конца массива, как в Perl.
Не обязательно писать ключ в кавычках. Например, $array[‘Fred’] подобно $arrat[Fred]. Тем не менее, считается хорошим стилем PHP всегда использовать кавычки. Если индекс без кавычек, то PHP использует значение константы в качестве индекса:
define('index',5); echo $array[index]; // вернет $array[5], не $array['index'];
Если вы хотите подставить в индекс число, то нужно делать так:
$age["Clone$number"]; // вернет, например $age["Clone5"];
Однако, не указывайте ключ в кавычках в следующем случае:
// неправильно print "Hello, $person['name']"; print "Hello, $person["name"]"; // правильно print "Hello, $person[name]";
Хранение данных в массивах
При попытке сохранения значения в массиве — автоматически будет создан массив, если он не существовал ранее, но при попытке извлечь значение из массива, который не был определен — массив не будет создан. Например:
// $addresses не определен до этого момента echo $addresses[0]; // ничего echo $addresses; // ничего $addresses[0] = 'spam@cyberpromo.net'; echo $addresses; // печать "Array"
Можно использовать простое присваивание для инициализации массива в программе:
$addresses[0] = 'spam@cyberpromo.net'; $addresses[1] = 'abuse@example.com'; $addresses[2] = 'root@example.com'; // ...
Мы объявили индексный массив с целыми индексами, начиная с 0.
Ассоциативный массив:
$price['Gasket'] = 15.29; $price['Wheel'] = 75.25; $price['Tire'] = 50.00; // ...
Более простой способ инициализации массива состоит в использовании конструкции Array(), которая строит массив из ее аргументов:
$addresses = array( 'spam@cyberpromo.net', 'abuse@example.com', 'root@example.com' );
Чтобы создать ассоциативный массив с помощью Array(), используйте => символ, отделяющий индексы от значений:
$price = array( 'Gasket' => 15.29, 'Wheel' => 75.25, 'Tire' => 50.00 );
Обратите внимание на использование пробелов и выравнивание. Мы могли бы сгруппировать код, но это будет менее наглядно:
$price = array('Gasket'=>15.29,'Wheel'=>75.25,'Tire'=>50.00);
Чтобы создать пустой массив, нужно вызвать конструкцию Array() без аргументов:
$addresses = Array( );
Вы можете указать начальную ключ в массиве, а затем список значений. Значения вводятся в массив, начиная с ключа с последующим увеличением:
$days = array(1 => 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'); // 2 is Tuesday, 3 is Wednesday, etc.
Если начальный индекс является строкой, то последующие индексы становятся целыми числами, начиная с 0. Таким образом, следующий код является, вероятно, ошибкой:
$whoops = array('Friday' => 'Black', 'Brown', 'Green'); // same as $whoops = array('Friday' => 'Black', 0 => 'Brown', 1 => 'Green');
Добавление нового элемента в конец массива
Чтобы вставить несколько значений в конец существующего индексированного массива, используйте [] синтаксис:
$family = array('Fred', 'Wilma'); // $family[0] = 'Fred' $family[] = 'Pebbles'; // $family[2] = 'Pebbles'
Эта конструкция предполагает, что индексами массива являются числа и присваивает элементу следующий доступный числовой индекс, начиная с 0. Попытка добавить элемент в ассоциативный массив почти всегда является ошибкой программиста, но PHP добавит новые элементы с числовыми индексами (начиная с 0) без выдачи предупреждения:
$person = array('name' => 'Fred'); // $person['name'] = 'Fred'; $person[] = 'Wilma'; // $person[0] = 'Wilma'
На данном этапе мы закончим вступительную часть работы с массивами в PHP. Жду вас в следующей статье.
Спасибо за внимание! Подписываемся 😉