Php работа со структурами

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Data Structure and Algorithm explanations with Implementations by PHP

Algorithm-archive/Learn-Data_Structure-Algorithm-by-PHP

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Learn Data Structure and Algorithms by PHP

You need to have basic understanding of the PHP programming language to proceed with the codes from this repository.

  • Introduction to PHP
  • Data Structure
    • Linked List
    • Stack
    • Queue
    • Binary Search Tree (BST)
    • Heap
    • Hash Table
    • Disjoint Set Union (Union Find)
    • Trie
    • Suffix Array
    • Segment Tree
    • Binary Indexed Tree (BIT)
    • Heavy Light Decomposition
    • Linear Search
    • Binary Search
    • Ternary Search
    • Selection Sort
    • Bubble Sort
    • Insertion Sort
    • Merge Sort
    • Quick Sort
    • Bucket Sort
    • Counting Sort
    • Heap Sort
    • Radix Sort
    • Graph Representation
    • Breadth First Search (BFS)
    • Depth First Search (DFS)
    • Topological Sort
    • Strongly Connected Components (SCC)
    • Minimum Spanning Tree (MST)
    • All Pairs Shortest Path (Floyd Warshall’s Algorithm)
    • Single Source Shortest Path Algorithm
      • Djkastra’s Algorithm
      • Bellman Ford Algorithm
      • Maximum Flow
      • Minimum Cut
      • Min-Cost Max Flow
      • Maximum Bipartite Matching
      • Vertex Cover
      • Rod Cutting
      • Maximum Sum (1D, 2D)
      • Coin Change
      • Longest Common Subsequence
      • Longest Increasing Subsequence
      • Matrix Multiplication
      • Edit Distance (Levenshtein distance)
      • 0/1 Knapsack
      • Travelling Salesman Problem
      • Optimal Binary Search Tree
      • Activity Selection/Task Scheduling
      • Huffman Coding
      • Knapsack Problem (Fractional Knapsack)
      • Rabin-Karp Algorithm
      • Knuth-Morris-Pratt Algorithm
      • Z Algorithm
      • Aho-Korasick Algorithm
      • Manachers Algorithm
      • Boyr-Moore Algorithm
      • Greatest Common Divisor (GCD)
      • Longest Common Multiplier (LCM)
      • Euler Totient (Phi)
      • Prime finding(Sieve of Eratosthenes)
      • Prime factorization
      • Factorial
      • Fibonacci
      • Counting, Permutation, combination
      • Exponentiation
      • Big Mod
      • Euclid, Extended euclid
      • Josephus Problem
      • Farey Sequence
      • Catalan numbers
      • Burnside’s lemma/circular permutation
      • Modular inverse
      • Probability
      • Chinese Remainder Theorem
      • Gaussian Elmination method
      • Dilworth’s Theorem
      • Matrix Exponentiation
      • Pick’s Theorem
      • Convex hull
      • Line Intersection
      • Point in a polygon
      • Area of a polygon
      • Line Sweeping
      • Polygon intersection
      • Closest Pair
      • Take Away Game
      • Nim’s Game
      • Sprague-grundy Number
      • BackTracking
        • N-Queen’s Problem

        PHP is a dynamic language with Weak Typing. That means you don’t have to declare the type of a variable ahead of time. The type will get determined automatically while the program is being processed. That also means that variables are not «bound» to a specific data type.:

        $foo pl-s">x"; // foo contains a string $foo = $foo + 2; // foo concatenates with a number echo $foo;

        PHP supports the following data types:

        • Four scalar types:
          • boolean ( True and False )
          • integer (Positive and negative numbers)
          • float (Floating point numbers)
          • string (series of characters)
          • array
          • object
          • callable
          • iterable
          • NULL
          • resource

          More details about data types in PHP:

          Object Oriented Programming in PHP

          Big-O Notation and Time Complexity Analysis

          If you have PHP installed in your machine you can easily run a PHP file using:

          If php command not working in your terminal/command line, then you might need to add it to your environment Path.

          About

          Data Structure and Algorithm explanations with Implementations by PHP

          Источник

          Работа со сложными структурами данных на PHP

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

          Массивы – это одна из самых распространенных и удобных структур данных на PHP. Массивы могут содержать любые типы значений и могут быть многомерными. Например, мы можем создать массив, содержащий список чисел:

          Или мы можем создать многомерный массив, содержащий список пользователей со следующей информацией:

          $users = array( array('name' => 'John', 'age' => 25, 'email' => 'john@example.com'), array('name' => 'Jane', 'age' => 30, 'email' => 'jane@example.com'), array('name' => 'Tom', 'age' => 35, 'email' => 'tom@example.com') );

          Для доступа к элементам массива мы можем использовать индексацию по номеру или по ключу. Например, чтобы получить второй элемент массива $numbers, мы можем использовать следующий код:

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

          $users[0]['email']; // 'john@example.com'

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

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

          Для работы со списками на PHP мы можем использовать классы SplDoublyLinkedList и SplQueue. Рассмотрим пример использования класса SplDoublyLinkedList для создания списка пользователей:

          $users = new SplDoublyLinkedList(); $users->push(array('name' => 'John', 'age' => 25, 'email' => 'john@example.com')); $users->push(array('name' => 'Jane', 'age' => 30, 'email' => 'jane@example.com')); $users->push(array('name' => 'Tom', 'age' => 35, 'email' => 'tom@example.com'));

          Мы можем использовать методы push и pop для добавления и удаления элементов из конца списка. Например, чтобы добавить нового пользователя в конец списка, мы можем использовать следующий код:

          $users->push(array('name' => 'Jack', 'age' => 40, 'email' => 'jack@example.com'));

          Для обхода списка мы можем использовать цикл while, вызывая метод valid для проверки наличия следующего элемента и методы current и next для получения текущего и следующего элементов:

          $users->rewind(); while ($users->valid()) < $user = $users->current(); echo $user['name'] . ' (' . $user['age'] . ') - ' . $user['email'] . '
          '; $users->next(); >

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

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

          Для работы с деревьями на PHP мы можем использовать классы SplDoublyLinkedList и SplQueue. Рассмотрим пример создания простого дерева категорий:

          class Category < public $id; public $name; public $parent; public $children = array(); public function __construct($id, $name, $parent = null) < $this->id = $id; $this->name = $name; $this->parent = $parent; > > $root = new Category(1, 'Root'); $categories = array( new Category(2, 'Category 1', $root), new Category(3, 'Category 2', $root), new Category(4, 'Category 3', $root), new Category(5, 'Category 1.1', $categories[0]), new Category(6, 'Category 1.2', $categories[0]), new Category(7, 'Category 1.3', $categories[0]), new Category(8, 'Category 2.1', $categories[1]), new Category(9, 'Category 3.1', $categories[2]), new Category(10, 'Category 1.1.1', $categories[4]), new Category(11, 'Category 1.1.2', $categories[4]) );

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

          $queue = new SplQueue(); $queue->enqueue($root); while (!$queue->isEmpty()) < $node = $queue->dequeue(); echo str_repeat('-', $node->id - 1) . $node->name . '
          '; foreach ($node->children as $child) < $queue->enqueue($child); > >

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

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

          Источник

          Читайте также:  Сокращенные формы операторов java
Оцените статью