Зарегистрируйтесь, чтобы продолжить обучение

Теория множеств PHP: Массивы

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

Что такое множество

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

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

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

Real Set

Удобно показывать множества на таких круговых схемах — так сразу видно, как они соотносятся друг с другом.

Операции над множествами

Главное в теории множеств — это операции над ними, в том числе:

  • Пересечение
  • Объединение
  • Разность (дополнение)
  • Принадлежность множеству

Пересечение

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

Чтобы реализовать пересечение, можно воспользоваться функцией array_intersect():

<?php

$friends1 = ['vasya', 'kolya', 'petya'];
$friends2 = ['igor', 'petya', 'sergey', 'vasya', 'sasha'];

array_intersect($friends1, $friends2); // ['vasya', 'petya']

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

Объединение

Объединением двух множеств называется множество, в которое входят элементы обоих множеств.

Чтобы реализовать объединение в PHP, можно соединить две функции — array_merge() и array_unique():

<?php

$friends1 = ['vasya', 'kolya', 'petya'];
$friends2 = ['igor', 'petya', 'sergey', 'vasya', 'sasha'];

// Функция array_merge выполняет слияние двух массивов
// Обратите внимание, что пока есть повторяющиеся элементы
$friends = array_merge($friends1, $friends2);
// ['vasya', 'kolya', 'petya', 'igor', 'petya', 'sergey', 'vasya', 'sasha'];

// Функция array_unique удаляет повторы
$sharedFriends = array_unique($friends);
// ['vasya', 'kolya', 'petya', 'igor', 'sergey', 'sasha']

Разность (дополнение)

Разностью двух множеств называется множество, в которое входят элементы первого множества, не входящие во второе. В PHP такую операцию выполняет функция array_diff():

<?php

$friends1 = ['vasya', 'kolya', 'petya'];
$friends2 = ['igor', 'petya', 'sergey', 'vasya', 'sasha'];

array_diff($friends1, $friends2); // ['kolya']

Принадлежность множеству

Еще мы можем проверить, принадлежит ли какой-то элемент конкретному множеству. В этом случае нужна функция in_array():

<?php

$terribleNumbers = [4, 13];

if (in_array(10, $terribleNumbers)) {
    print_r('woah!');
}

Множества в программировании

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

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

С точки зрения математики, ваши друзья и друзья вашего друга — это два множества. Значит, чтобы найти общих друзей, нужно реализовать пересечение двух исходных множеств. Зная этот факт, вы сможете быстро загуглить фразу intersection of sets in PHP и освежить в памяти документацию функции array_intersect(). То же самое сработает и с другими операциями.

Кстати, не во всех языках есть встроенные функции для работы со множествами. Иногда приходится ставить дополнительные библиотеки или использовать арифметические операторы. Например, объединение множеств в Ruby выглядит так:

coll1 + coll2

Отдельно стоит сказать, что массивы — это не единственная тема, связанная с математикой. Еще есть реляционные базы данных. Они построены на идеях реляционной алгебры, в которой теория множеств играет центральную роль. Базы данных — неотъемлемая часть веб-разработки, и позже мы с ними познакомимся.


Дополнительные материалы

  1. Основы и базовые операции над множествами

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

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

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 2 января

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»