Использование массивов (array) в PHP

Массивы в PHP, применение на практике

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

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

Заходим в терминал, запускаем mc, предварительно зайдя от root пользователя и выполняем следующую команду:

mkdir /home/learning/third_lesson

Теперь создадим там файл Arrays.php со следующим кодом:

touch Arrays.php
или
touch /home/learning/third_lesson/Arrays.php

Файл: Arrays.php

<?php
$array = [7, 3, 1, 2, 4, 5, 6];
print_r($array);
?>

Запустим наш PHP-скрипт и посмотрим что он нам выведет:

Мы видим структуру нашего массива $array, нумерация (индексы) массива идет от 0 до 6, всего в массиве 7 элементов и значения элементов не отсортированы, я специально так расположил значения, чтобы показать как работает сортировка массивов в PHP, так же этот пример будет применим и в других языках программирования, не обязательно PHP.

Использование сортировки массивов в PHP

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

Давайте рассмотрим пример сортировки с помощью usort() с применением своего алгоритма сравнения при помощи анонимной функции (их мы рассмотрим отдельно в следующих статьях).

Приведите скрипт к следующему виду:

Файл: Arrays.php

<?php
$array = [7, 3, 1, 2, 4, 5, 6];
print_r($array);
usort($array, function($a, $b){
if ($a === $b)
    {
        return 0;
    }
else
    {
        return (($a > $b) ? 1 : -1);
    }
});
print_r($array);
?>

Есть несколько алгоритмов сортировки: глупая сортировка, сортировка пузырьком, шейкерная сортировка, четно-нечетная сортировка и сортировка расческой. Этим алгоритмам я посвящу отдельные статьи с примерами их реализации на PHP. Вернемся к нашему скрипту сортировки, запустим его:

php Arrays.php

Простым языком наша функция двигает элемент ($a) вниз, если он больше следующего ($b), а если же они равны, то оставляет на месте. Алгоритм очень схож с алгоритмом сортировки пузырьком, но немного модифицирован, вы в этом можете убедиться если сделаете вывод значений $a и $b внутри функции на экран, давайте попробуем это сделать:

Файл: Arrays.php

<?php
$array = [7, 3, 1, 2, 4, 5, 6];
print_r($array);
usort($array, function($a, $b){
echo $a . " - " . $b . "\n";
if ($a === $b)
    {
        return 0;
    }
else
    {
        return (($a > $b) ? 1 : -1);
    }
});
print_r($array);
?>

Запустим скрипт:

php Arrays.php

На этом скрине наглядно показано, как постепенно 7 передвинулась в конец массива. Давайте не будем зацикливаться на сортировке массива, а перейдем к их сравнению. Как и обещал я посвящу отдельные статьи сортировки массивов на примере языка PHP, так как тема требует более глубокого изучения.

Сравнение массивов

Представим два массива, к примеру взгляните на картинку. Мы сразу скажем что яблоко и апельсин не одно и то же. А как же быть с массивами? Массивы как и эти два фрукта можно сравнивать, например массивы в которых равны их пары значение/ключ равны между собой.

Ниже представлена таблица с возможными операциями сравнения массивов:

Пример Название Результат
$a == $b Равно TRUE в случае, если $a и $b содержат одни и те же пары ключ/значение.
$a === $b Тождественно равно TRUE в случае, если $a и $b содержат одни и те же пары ключ/значение в том же самом порядке и того же типа.
$a != $b Не равно TRUE, если массив $a не равен массиву $b.
$a <> $b Не равно TRUE, если массив $a не равен массиву $b.
$a !== $b Тождественно не равно TRUE, если массив $a не равен тождественно массиву $b.

Создадим файл ArraysComparison.php для проведения операций сравнения массивов.

touch /home/learning/third_lesson/ArraysComparison.php

Файл: ArraysComparison.php

<?php
$first  = [1, 2, 3, 4, 5, 6, 7];
$second = ["1", 2, 3, 4, 5, 6, 7];

if ($first == $second)
    {
        echo "Равны между собой, независимо от типа данных значений элементов\n";
    }

if ($first !== $second)
    {
        echo "Не равны, так как имеют разные типы данных значений элементов\n";
    }
?>

Запустим скрипт:

php ArraysComparison.php

Помните, как в одной из прошлых статей мы сравнивали значения переменных по значению и по типу и значению. С массивами это работает точно так же. Главным условием равенства массивов является порядок элементов и совпадение пар ключ/значение, это же относится к ассоциативным массивам.

Объединение массивов (array_merge) в PHP

Помимо сортировки и сравнения массивы можно объединять между собой. Давайте представим что вы с другом шли по супермаркету с двумя корзинками, в которых были какие-то продукты, затем вы взяли большую корзину и сложили туда продукты из двух корзин, тем самым все товары оказались в одной корзине. Я на примере из жизни рассказал вам только что, как работает merge массивов. Давайте посмотрим, как работает array_merge в PHP, да и вообще в любом из языков программирования он работает аналогично.

Создадим файл ArraysMerge.php

touch ArraysMerge.php

Файл: ArraysMerge.php

<?php
$a = [2, 4, 6, 8];
$b = [1, 3, 5, 7];
print_r($a);
print_r($b);
$c = array_merge($a, $b);
print_r($c);
?>

Запустим скрипт:

php ArraysMerge.php

Выше приведен простой пример объединения двух массивов, это работает с любыми массивами, будь они ассоциативные или обычные — не важно.

Помимо этих операций существует еще огромное множество операций которые можно проводить с массивами.

Прочие операции с массивами

Давайте познакомимся еще с несколькими операциями с массивами, возьмем несколько операций и напишем их в одном скрипте.

  • array_slice()
  • array_unique()
  • unset()
  • array_reverse()

Рассмотрим эти операции, а после расскажу что они делают. Для этого создадим отдельный скрипт: OtherArrayOperations.php

touch OtherArrayOperations.php

Файл: OtherArrayOperations.php

<?php
$array = [1, 1, 2, 2, 3, 4, 5, 6, 7, 7, 8];
print_r($array);
$array = array_unique($array);
print_r($array);
$array = array_slice($array, 3, 3);
print_r($array);
unset($array[2]);
$array = array_reverse($array);
print_r($array);
?>

Запустим скрипт:

php OtherArrayOperations.php

У нас был массив, мы сделали его уникальным, удалив повторяющиеся значения, затем обрезали 3 элемента, начиная с 3 позиции, после этого мы уничтожили элемент с индексом 2 (3 элемент, так как нумерация в массивах начинается с 0), затем мы сделали реверс, перевернули массив к верх ногами.

Подведем итоги

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

Подпишитесь на рассылку новых статей

Подпишитесь на рассылку свежих статей и присоединяйтесь к 5 остальным подписчикам.

Использование массивов (array) в PHP: 1 комментарий

  1. Уведомление: Анонимные функции в PHP (замыкания, closures) — slashdash.ru

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *