Re: How about implementing more data structures (ie Map, Set)

From: Date: Tue, 18 Dec 2012 15:21:10 +0000
Subject: Re: How about implementing more data structures (ie Map, Set)
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-64343@lists.php.net to get a copy of this message
On Dec 18, 2012, at 9:43 AM, Victor Berchet <victor@suumit.com> wrote: > Dear all: > > I would like to get your feedback on implementing some more data structure in the PHP core. > > Things like Set, Map could be really helpful. > > A Set would be an unordered collection with no duplicate elements (same as in Python) > > $setA = new Set(); > $setA->append('a'); > $setA->append('a'); > > $setB = new Set(); > $setB->append('b'); > > $setA == $setB; > > // A set can hold objects > $set->append($object); > > A Map would be an associative array that can hold objects (same as Python dictionaries) > > $map= new Map(); > > $map[$setA] = 'Hello, world!'; > echo $maps[$setB]; // Hello, world ! Most of what you're looking for can be accomplished by implementing ArrayAccess in your own classes, or using the ArrayObject generically like so: php > $obj = new ArrayObject(array()); php > $obj->append('some string'); php > $obj->append(new ArrayObject(array())); php > var_dump($obj[1]); class ArrayObject#4 (0) { } php > var_dump($obj[0]); string(11) "some string" For the duplicate issue you're referring to, you'd need to implement your own methods for removing (e.g. array_unique). > > I can not really help with the implementation, however I could help defining the API, creating > a test suite and docs should this idea be accepted. > > Note: I had to implement this in PHP while working on Automaton, it's tedious and > inefficient. > > Thanks for your feedback, > Victor > > >

« previous php.internals (#64343) next »