PHP Classes

PHP DS Functional: Convert values stored in PHP data structures

Recommend this page to a friend!
  Info   View files Documentation   View files View files (4)   DownloadInstall with Composer Download .zip   Reputation   Support forum (1)   Blog (1)    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 48 This week: 1All time: 10,685 This week: 560Up
Version License PHP version Categories
data-struct 1.0.0GNU General Publi...7Data types, PHP 7
Description 

Author

This package can convert values stored in PHP data structures.

It provides a class that can convert values stored in data structures supported by the PHP DS extension.

The package also provides functions to initialize data structures from values passed as parameters.

Currently it supports PHP data structures like vector, set, stack, queue, map, deque and pqueue.

Innovation Award
PHP Programming Innovation award winner
June 2021
Winner


Prize: One official elePHPant Plush Mascott
The PHP DS extension provides a more efficient way to manipulate common data structures like vector, set, stack, queue, map, deque, and pqueue.

This package provides a simple way to convert values to be used by the functions of the PHP DS extension.

Manuel Lemos
Picture of Carlos Artur Curvelo da Matos
  Performance   Level  
Name: Carlos Artur Curvelo da ... is available for providing paid consulting. Contact Carlos Artur Curvelo da ... .
Classes: 19 packages by
Country: Portugal Portugal
Age: 46
All time rank: 288339 in Portugal Portugal
Week rank: 109 Up3 in Portugal Portugal Up
Innovation award
Innovation award
Nominee: 13x

Winner: 2x

Documentation

Functional Data Structures

This package relies on PHP-DS extension to provide a functional way of dealing with advanced data structures, such as vectors, stacks or sets. As provided by the extension, a number of classes offer an object-oriented way of creating, managing and dealing with those structures, although no functions have been so far provided to create those structures.

Idea is to give the developer a way of creating new structures in the same way he does with array(...), or similarly to C++ or Java approach for those data types.

How it works

This package allows you to create a stack or a vector the same way you do with a common array:

$vector = vector(1, 10, 34, 1, 11, 20);
$stack = stack(2, 4, 78, 2, 1, 445);
$set = set(1, 2, 3, 4, 5);

var_dump($vector);
var_dump($stack);
var_dump($set);

/*

object(Ds\Vector)#3 (6) {
  [0]=>
  int(1)
  [1]=>
  int(10)
  [2]=>
  int(34)
  [3]=>
  int(1)
  [4]=>
  int(11)
  [5]=>
  int(20)
}
object(Ds\Stack)#2 (6) {
  [0]=>
  int(445)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(78)
  [4]=>
  int(4)
  [5]=>
  int(2)
}
object(Ds\Set)#4 (5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
}

*/

Which functions can I use?

All data structures covered by PHP-DS received an equivalent function, which accepts ANY number of elements, just like an array. However, contrary to an array in PHP, these functions only allow the values to be set (later, you can use the objected instantiated by each function to have access to the respective class' methods). So, this includes:

  • stack(...elements)
  • vector(...elements)
  • set(...elements)
  • queue(...elements)
  • deque(...elements)
  • map(...elements)

The only exception happens with the pqueue() functions. This particular data structure entangles each value added to a priority level. So, when using this function, the number of elements must be always even - and from these, all the odds will correspond to the previous value priority.

Example: pqueue(3, 10, 1, 5, 2, 25);

In this case, the values to be added to your PriorityQueue object will be (2, 3, 1) - in this order. That happens because, according to the elements provided, the number "2" has the highest priority, then "3" and finally "1", with the lowest priority of 5.


  Files folder image Files  
File Role Description
Files folder imagesrc (2 files)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  src  
File Role Description
  Accessible without login Plain text file functions.php Aux. Auxiliary script
  Plain text file Tools.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:48
This week:1
All time:10,685
This week:560Up
User Comments (1)
Thats a very goood class .
2 years ago (José Filipe Lopes Santos)
70%StarStarStarStar