ProfiPHPProfiPHP
  1. Главная
  2. Типы данных PHP
  3. Массивы (Array)

Массивы (Array)

Массив в PHP - это упорядоченный набор данных. Значением массива может быть другой массив PHP, что позволяет создавать многомерные массивы.

Массив может быть создан языковой конструкцией Array. В качестве параметров она принимает любое количество разделенных запятыми пар "Key => Value" (ключ => значение).
array(
key => value,
key2 => value2,
key3 => value3,
...
)
Запятая после последнего элемента массива необязательна и может быть опущена. Обычно это делается для однострочных массивов, для многострочных последняя запятая позволяет легче добавлять новые элементы в конец массива.

Также можно использовать короткий синтаксис определения массивов, который заменяет языковую конструкцию array() на [] (начиная с PHP 5.4):
$array = array(
"foo" => "bar",
"bar" => "foo",
);
$array = [
"foo" => "bar",
"bar" => "foo",
];
Ключ Key может быть либо типа Integer, либо типа String. Параметр Value может быть любого типа.

Дополнительно с ключом Key будут сделаны следующие преобразования:

- Строки, содержащие целое число будут преобразованы к типу Integer.

- Числа с плавающей точкой (тип Float) будут преобразованы к типу Integer.

- Тип Bool также преобразовываются к типу Integer.

- Тип Null будет преобразован к пустой строке "".

Массивы (тип Array) и объекты (тип Object) не могут использоваться в качестве ключей. При подобном использовании будет генерироваться предупреждение: Fatal error: Illegal offset type (Недопустимый тип смещения).

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

Массивы в PHP могут содержать ключи типов Integer и String одновременно, так как PHP не делает различия между индексированными и ассоциативными массивами.

Параметр Key является необязательным. Если он не указан, PHP будет использовать предыдущее наибольшее значение ключа типа Integer, увеличенное на 1.

Возможно указать ключ только для некоторых элементов и пропустить для других:
$array = array(
"a",
"b",
6 => "c",
"d",
);
Результат выполнения данного примера:
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[6]=>
string(1) "c"
[7]=>
string(1) "d"
}
Как вы видите последнее значение "d" было присвоено ключу 7. Это произошло потому, что самое большое значение ключа целого типа перед этим было 6.

Доступ к элементам массива


Доступ к элементам массива может быть осуществлен с помощью синтаксиса:
array[key]
Пример доступа к элементам массива:
echo $array[6];
echo $array{12};
echo $array['a']['b'];
Как видно из примера, и квадратные и фигурные скобки можно взаимозаменяемо использовать для доступа к элементам массива.

Начиная с PHP 5.4 стало возможным прямое разыменование массива, возвращаемого в качестве результата вызова функции или метода.
function getArray() {
return array('a', 'b', 'c');
}
echo $secondElement = getArray()[1]; // b
Попытка доступа к неопределенному ключу в массиве аналогична к попытке доступа к любой другой неопределенной переменной: будет сгенерирована ошибка уровня E_NOTICE, и результат будет NULL.

Существующий массив может быть изменен путем явной установкой значений в нем. Это выполняется присвоением значений массиву с указанием в скобках ключа. Кроме того, ключ можно опустить, в результате получится пустая пара скобок ([]).
$array['foo'] = 10;
$array[] = 11;
Если массив $array еще не существует, он будет создан. Таким образом, это еще один способ определить массив Array. Однако такой способ применять не рекомендуется, так как если переменная $array уже содержит некоторое значение (например, значение типа String из переменной запроса), то это значение останется на месте и [] может на самом деле означать доступ к символу в строке. Лучше инициализировать переменную путем явного присваивания значения.

Для изменения определенного значения просто присвойте новое значение элементу, используя его ключ. Если вы хотите удалить пару ключ/значение, вам необходимо использовать функцию Unset.
unset($array[5]);
Также следует заметить, что максимальное целое значение ключа не обязательно существует в массиве в данный момент. Оно могло просто существовать в массиве какое-то время, с тех пор как он был переиндексирован в последний раз.

Преобразование в массив


Для любого из типов Integer, Float, String, Boolean и Resource, преобразование значения в массив дает результатом массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали.

Если вы преобразуете в массив объект (object), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов, с некоторыми примечательными исключениями: целочисленные свойства станут недоступны; к закрытым полям класса (private) спереди будет дописано имя класса; к защищенным полям класса (protected) спереди будет добавлен символ '*'. Эти добавленные значения с обоих сторон также имеют нулевые байты.

Если вы преобразуете в массив значение NULL, вы получите пустой массив.

Добавить комментарий

Имя:
Текст комментария: