PHP5 Array2Nested v1.1.2
Ik las op PHPFreakz onlangs een topic waarin gevraagd werd hoe je data kan omzetten naar geneste data zodat je bv categorieën eindeloos kunt nesten in een forum, webshop etc.
Met dat idee en te veel vrije tijd tijdens de kerstdagen ben ik begonnen aan een class/module om het hele recursieve nesten ietwat te automatiseren.
Het nesten gebeurd zoals genoemd recursief a.d.h.v. een id/parent combinatie binnen een array.
Ondanks dat ik dat ik tijdens het maken van deze class pas op de hoogte werd gesteld van de left/right methode (http://www.sitepoint.com/article/hierarchical-data-database/2/), heb ik toch besloten om aan de recursieve methode vast te houden. Dit maakt het werken met objecten van _directe_ kinderen veel eenvoudiger. Daarnaast is het in de praktijk onwaarschijnlijk dat je tot diepte 1000+ gaat nesten.
Uiteraard mogen mensen zich melden die zich interesseren voor het implementeren van een layer optie in deze module. Iets als;
abstract Nested_Nest, Nested_Nest_Recursive, Nested_Nest_LeftRight
Het is uiteraard wel essentieel dat de recursieve werking van de module blijft werken. (Nested::getRoot()->firstChild()->firstChild()[->...])
Getest op:
PHP 5.2.4
Versie:
1.1.2
Bestanden:
Nested_Example.php, Nested.php, Nested_Child.php, Nested_Exception.php
Output voorbeeld:
http://www.devarea.nl/roland-tmp/Nested_Example.png
Geplaatst op:
PHPFreakz, PHPHulp, Sitemasters
Changelog:
v1.1.2 [30-12-08]
* Nested::sortAll toegevoegd om de kinderen van elk item tegelijk hetzelfde te sorteren
* Nested_Child::getIndex() toegevoegd
* Nested_Child::randomChild/childById/childByIndex toegevoegd
* Nested_Child::isChild/getChild verwijderd
* Nested_Output verwijderd; HTML implementatie is niet te globaliseren - opnieuw voorbeeld toegevoegd voor geneste HTML list
v1.1.1 [28-12-08]
* Nested::getFlat() aangepast; Nested::getFlat() -> array(id => Nested_Child); Nested::getFlat(true) -> array(id => array(row_data))
* Nested::MAX_DEPTH ident toegevoegd; elk kind lager als n bepaalde diepte wordt kind van de vorige parent (0 = unlimited)
* Performance update: diepte wordt niet meer berekend door de 'ancestors' te tellen maar direct bij het nesten
* Nested_Child::isMaxDepth() toegevoegd om te controleren of een kind zich in de maximale diepte bevindt
* Kinderen sorteren gebeurd nu via het 'natural ordering algorithm', zodat 'Titel 10' na 'Titel 9' komt (ASC)
v1.1.0 [27-12-08]
* Nested_Child::FLAG_LIMIT toegvoegd om het aantal kinderen via Nested_Child::getChildren() te limieten
* Nested::__toString/toHtml, Nested_Child::__toString/toHtml en Nested_Output toegvoegd (zie voorbeeld)
v1.0.0 [26-12-08]
* dump
Voorbeeld: http://www.devarea.nl/roland-tmp/Nested_Example.png
Gesponsorde koppelingen
PHP script bestanden
Er zijn 10 reacties op 'Onbekend'
Om te reageren heb je een account nodig en je moet ingelogd zijn.
PHP hulp
0 seconden vanaf nu