PHP: Arrays (массивы), основы. Часть 1.

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. Жду вас в следующей статье.

Спасибо за внимание! Подписываемся 😉

 

Автор статьи: Alex. Категория: PHP
Дата публикации: 09.04.2013