Дизайн

PHP: массивы и реализация стека

   Стек

   Идея стека появилась вместе с первым процессором и до сих пор обеспечивает работу аппаратного обеспечения информационных технологий. Аббревиатура SP:SS вызывает ностальгию по реальному программированию в кодах процессора. Это было удивительное время, когда информационные системы назывались интеллектуальными, а фанаты искусственного интеллекта писали свои «программы-произведения» на ассемблере, демонстративно игнорируя пролог и лисп.

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

Функции организации стека

   PHP предлагает четыре функции для организации стека, но практический интерес имеет только одна: array_pop() – извлечь последний элемент и уменьшить размер массива. Функция добавления элемента в массив не нужна, поскольку красивее и удобнее использовать конструкцию:

   $aElements[] = ‘about this’;

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

   Идеальное решение:

   $aElements[] = ‘pascal’;$aElements[] = ‘fortran’;$aElements[] = ‘prolog’;$aElements[] = ‘lisp’;

   $cContents = array_pop($aElements) . ‘ — [‘ . implode(‘; ‘, $aElements) . ‘]’;

   Первые три оператора заполняют стек последовательно и в нем получается четыре элемента, последний оператор извлекает последний элемент из стека и результат: lisp — [pascal; fortran; prolog]. Здесь элемент «lisp» извлекается и может быть присвоен любой переменной, а в массиве остаются три элемента: «pascal», «fortran» и «prolog».

Применение стека

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

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

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