Получение элементов массива php

Работа с массивами в PHP

Массив – это тип данных для хранения упорядоченного набора элементов. Каждый элемент в массиве состоит из ключа и значения.

В PHP имеются только упорядоченные ассоциативные массивы. Индексированных массивов в PHP нет.

Но тем не менее в PHP мы можем создавать простые массивы. При указании значений без ключей, они будут им присваиваться автоматически.

Например, создадим массив, который будет содержать среднюю температуру каждого месяца в году:

Здесь мы создали массив $temperatures, содержащий 12 значений. Каждый элемент в этом массиве имеет ключ. Первый элемент имеет в качестве ключа число 0, второй – число 1, и так далее. Последний элемент имеет в качестве ключа число 11.

Другой вариант создания массивов – это использовать функцию array() :

Создание массива без элементов, то есть пустого массива, в PHP выполняется так:

Обращение к значению массива выполняется посредством ключа, который указывается в квадратных скобках:

В квадратных скобках при необходимости можно указывать выражение, результат вычисления которого будет использоваться в качестве ключа элемента, значение которого нужно получить:

Если мы попытаемся обратиться к элементу, которого нет в массиве, то начиная с PHP 8.0.0, мы получим сообщение об ошибке E_WARNING . При этом в качестве значение будет возвращено null .

Проверить наличия некоторого ключа в массиве можно с помощью функции array_key_exists :

Добавление в массив нового элемента или изменение существующего осуществляется в PHP так:

Здесь мы при добавлении нового элемента в массив не указали ему ключ. В этом случае ключ будет на единицу больше самого большого числового ключа в массиве.

Удаление элемента массива в PHP выполняется с помощью специальной языковой конструкции unset :

С помощью unset вы можете удалить не только отдельный элемент, но и полностью весь массив:

В PHP массиве могут содержаться данные различных типов:

Вывод содержимого массива

Вывести все значения массива на экран можно с помощью функции print_r :

Но чтобы этот вывод был более наглядным лучше это делать внутри тега :

Вывод содержимого массива с помощью функции print_r в PHP

Ассоциативные массивы

Создание ассоциативных массивов в PHP выполняется с указанием ключа. При этом в качестве ключа могут использоваться как числа, так и строки:

 'English', 'fr' => 'French', 'es' => 'Spanish', 'pt' => 'Portuguese' ]; echo $languages['es']; // 'Spanish' 

При этом в PHP выполняются следующие преобразования при сохранении ключей:

  • строка ‘7’ будет преобразована в число 7 ; но например ключ ’07’ не будет преобразован, так как он не является корректным числом;
  • число 7.5 , то есть число с плавающей точкой ( float ) будет преобразовано к целому числу, в данном случае к 7 ;
  • true к 1 , а false к 0 ;
  • значение null к пустой строке » .
 'a', '095' => 'b', 9.5 => 'c', true => 'd', null => 'e', ]; echo $arr[95]; // a echo $arr['095']; // b echo $arr[9]; // c echo $arr[1]; // d echo $arr['']; // e

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

 'a', '0' => 'b', 0.7 => 'c', false => 'd', ]; echo '
'; print_r($array); echo '

';

Так как в этом примере все ключи преобразуются к 0 , то каждый следующий элемент будет перезаписывать предыдущий и останется в массиве только один ключ со значением ‘d’ .

Массив в PHP, у которого элементы имеют одинаковые ключи

В одном массиве могут содержаться ключи различных типов, то есть одновременно int и string :

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

Наиболее удобный способ прохождения по массиву в PHP – это использовать конструкцию foreach :

 'English', 'fr' => 'French', 'es' => 'Spanish', 'pt' => 'Portuguese', ]; /* $languages – массив, который нужно перебрать $key – значение ключа $value – значение, соответствующее ключу */ echo '
'; foreach ($languages as $key => $value) { echo "Ключ '$key' имеет значение '$value'
"; } echo '

';

Если нужно только по значениям:

foreach ($languages as $value) { echo "$value
"; }

Если ключи массива составляют последовательность, то перебрать такой массив можно с помощью for :

Здесь мы с помощью встроенной функции count() получить длину или другими словами размер массива. Узнать длину массива также можно с помощью sizeof() .

Функцию count также можно использовать для получения последнего элемента массива. Но это повторим только возможно если ключи массива составляют числовую последовательность, начинающуюся с 0 .

Функции для работы с массивами

В PHP очень много различных функций для работы с массивами. Рассмотрим некоторые из них.

Сортировка

Сортировка массива в порядке возрастания осуществляется с помощью функции sort , в порядке убывания посредством rsort .

Для настройки сортировки можно передать в качестве второго аргумента флаг.

Для того чтобы ключи сохранили значения, с которыми они связаны, сортировку массива необходимо выполнять с помощью функции asort . Функция asort сортирует в порядке возрастания, для сортировки в порядке убывания используйте arsort . Эти функции сортируют массив соответственно как sort и rsort , но ключи в отличие от них остаются связанными с такими же значениями.

Например, выведем с помощью ассоциативного массива $students имя студента и соответствующий полученный им балл в порядке их возрастания:

 47, 'Bob' => 24, 'Tom' => 36, ]; asort($students); echo '
'; print_r($students); echo '

';

Сортировка массива в PHP, у которого ключи сохранили значения, с которыми они связаны

Массивы в PHP можно сортировать не только по значениям, но и ключам. Для этого используется функция ksort . Для ассоциативного массива $students функция ksort выстроит все элементы в порядке возрастания названий ключей.

 47, 'Bob' => 24, 'Tom' => 36, ]; ksort($students); // ['Bob' => 24, 'John' => 47, 'Tom' => 36]

Для сортировки в порядке убывания можно использовать krsort :

 krsort($students); // ['Tom' => 36, 'John' => 47, 'Bob' => 24]

Перемешивание элементов случайным образом

Если вам нужно перемешать элементы в массиве случайным образом, то можно воспользоваться функцией shuffle :

 'English', 'fr' => 'French', 'es' => 'Spanish', 'pt' => 'Portuguese', ]; shuffle($languages); // ['Portuguese', 'French', 'Spanish', 'English'] shuffle($languages); // ['English', 'French', 'Spanish', 'Portuguese']

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

Выстраивание элементов в обратном порядке

Если вам необходимо создать новый массив, в котором элементы нужно выстроить в обратном порядке, то используйте array_reverse :

 'English', 'fr' => 'French', 'es' => 'Spanish', 'pt' => 'Portuguese', ]; $languagesReverse = array_reverse($languages); echo '
'; print_r($languagesReverse); echo '

';

Создание нового массива в PHP, в котором элементы выстроены в обратном порядке относительно исходного массива

Работа над массивами как с множествами значений

В PHP имеются функции: array_merge , array_intersect и array_diff . Они позволяют работать с массивами как с множествами значений.

1. Объединение одного или несколько массивов вместе выполняется в PHP с помощью функции array_merge :

array_merge(array . $arrays): array

Например, объединим с помощью array_merge элементы 3 массивов вместе:

 'red', 1, 'php', 4]; $array2 = ['price' => 20.8, 1, 'color' => 'green', 3]; $array3 = ['green', 'price' => 30.5, 3, 'php']; $array = array_merge($array1, $array2, $array3); echo '
'; print_r($array); echo '

';

Объединение значений из разных массивов в PHP

Если массивы имеют одинаковые строковые ключи, то более позднее значение этого ключа перезапишет предыдущее. Например, значение ‘green’ ключа ‘color’ перезапишет ‘red’ .

Однако если массивы содержат числовые ключи, то более позднее значение не перезаписывает предыдущее, оно будет просто добавлено в массив. Значения с числовыми ключами в результирующем массиве будут перенумерованы последовательно начиная с нуля.

Функция array_merge , вызванная без аргументов возвращает пустой массив:

2. Функция array_intersect вычисляет пересечения значений основного массива со значениями других массивов:

// $base – основной массив // $arrays – другие массивы array_intersect(array $base, array . $arrays): array

В качестве результата оно возвращает массив со значениями основного массива, которые имеются во всех других массивах.

 'red', 1, 'php', 4]; $array1 = ['price' => 20.8, 1, 'color' => 'red', 3]; $array2 = ['green', 'color' => 'red', 3, 'php', 1]; $result = array_intersect($base, $array1, $array2); // ['color' => red, 0 => 1]

3. Функция array_diff вычисляет разницу между массивами:

// $base – основной массив // $arrays – другие массивы array_diff(array $base, array . $arrays): array

В качестве результата оно возвращает массив со значениями основного массива, которых нет ни в одном из других массивов.

 'red', 1, 'php', 4]; $array1 = [3, 'color' => 'red']; $array2 = [4, 'php']; $result = array_diff($base, $array1, $array2); // [0 => 1]

Проверка наличия ключей и значений в массиве

Проверить имеется ли указанное значение в массиве можно с помощью функции in_array :

if (in_array('apple', $fruits)) { // значение 'apple' имеется в массиве $fruits }

Здесь, в первый аргумент необходимо передать искомое значение, а во второй – сам массив. В качестве результата in_array возвращает true или false .

Кроме in_array в PHP имеется ещё функция array_search . Она выполняет тоже самое, но в отличие от in_array возвращает ключ этого значения.

Если нужно проверить наличие не значения, а ключа, то можно воспользоваться функцией array_key_exists :

if (array_key_exists('es', $languages)) { // ключ 'es' имеется в массиве $languages }

Сериализация

Сериализация в PHP – это очень мощный механизм, позволяющий легко преобразовать массив в строку, которая будет содержать ключи и значения в структурированном формате. Полученные строки затем можно сохранять в файлы и базу данных.

Сериализация массива в строку выполняется с помощью функции serialize . Для декодирования строки, содержащей сериализованный массив, обратно в исходный массив используется функция unserialize :

// исходный массив $person = [ 'name' => 'Alexander', 'age' => 23 ]; // сериализуем массив в строковое представление, уникальное для PHP $personString = serialize($person); // выведем на экран строку echo $personString; // 'a:2:{s:4:"name";s:9:"Alexander";s:3:"age";i:23;}' // преобразуем строку обратно в массив $personArray = unserialize($personString); // выведем на экран массив в форматированном виде echo '
'; print_r($personArray); // array('name' => Alexander, 'age' => 23) echo '

';

Многомерные массивы

Многомерные массивы – это массивы, элементы которого просто содержат другие массивы.

Пример создания двумерного массива:

$software = [ 'os' => ['Windows', 'Linux', 'macOS'], 'browsers' => ['Firefox', 'Chrome', 'Safari', 'Edge'], 'code editors' => ['Visual Studio Code', 'Atom', 'Sublime Text'], ];

По сути двумерный массив – это массив массивов. Обращение к элементу массива в этом случае осуществляется с использованием двух квадратных скобок:

echo $software['os'][0]; // 'Windows' $software['browsers'][3] = 'Opera';

Выведем с помощью функции print_r массив $software в форматированном виде:

echo '
'; print_r($software); echo '

';

Источник

Читайте также:  Рисование линии си шарп
Оцените статью