Sziasztok!
Gondolkodtam az algoritmusok témán is, de mivel ez nyelvspecifikus, jobbnak láttam ide írni. Nested set törlésénél kellene PHP-ben az olyan számpárokat kiszűrnöm, amelyeknek a szülő kategóriája is ki van jelölve törlése. Tehát ha a szülő kategória ki van jelölve törlésre, akkor minden alkategóriája is törlésre fog kerülni, vagyis ezekre az alkategóriákra nincs szükség a listában. Egy példán keresztül bemutatom. A törlésre kijelölt kategóriák:
2 3
4 7
5 6
Ezek a számpárok egy array-ban vannak:
Array ( [0] => Array ( [lft] => 2 [rgt] => 3 ) [1] => Array ( [lft] => 4 [rgt] => 7 ) [2] => Array ( [lft] => 5 [rgt] => 6 ) )
Az alkategóriák eltávolítására (jelen példa esetén az 5 6 számpárra) kellene valami jó algoritmust találnom (tehát hogy az eredmény 2 3, 4 7 legyen).
Arra gondoltam, hogy először megvizsgálom foreach-ben, hogy az adott tömb elemének van-e alkategóriája (rgt - lft > 1), majd ha van akkor a tömbben megszüntetem azokat az elemeket, amelyeknek az lft-je nagyobb és az rgt-je kisebb az adott elem lft és rgt értékénél, de ehhez foreach-ben kellene futtatnom egy újabb foreach-et ugyanarra a tömbre, még ha referencia hivatkozással (foreach $rows as &$row) oldom meg, akkor se szép megoldás, és nem is a leggyorsabb.... Valakinek van jobb ötlete? Előre is köszönöm!