Archief - PHP: Sorteren van arrays met objecten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

passero

Legacy Member
Ik heb een array die bestaat uit objecten. Die objecten zijn allemaal eenzelfde klasse die ik zelf gemaakt hebt.
Een van zijn attributen is getWaarde();

Nu zou ik mijn array willen sorteren aan de hand van getWaarde. Wat zou de gemakkelijkste manier zijn om dit te doen?

Rvl

Legacy Member
Indien alle waardes uniek zijn zou je gewoon u getwaarde als key van u array kunnen instellen met u object als value en dan staan ze automatisch in de juiste volgorde, nu betwijfel ik ten sterkste dat al die values uniek zullen zijn maar indien dit zo is kan deze manier toch al helpen

Er is ook een andere manier om te sorteren op objecten. Je gebruikt gewoon de functie sort() op je array met objecten en deze zal u array sorteren op de waarden van de EERSTE VARIABELE in je class. Dus die getter laat je achterwege en je zet gewoon de var met deze waarde als eerste in je class, mssh lijkt de manier van code een beetje "tricky" maar het is allesinds een oplossing voor je probleem

passero

Legacy Member
mmm 2de is eigenlijk geen optie omdat al die objecten van 1 superklasse erven en die waarde wordt gedefinieerd in de hoofdklasse. De childklassen kunnen er dus enkel aan via een getter en setter... nuja, kan hier altijd mee foefelen maar dat doe ik niet graag.

ik kan misschien wel beetje foefelen wat betreft de unieke waarde. het zijn floats dus als ik die afrond op 2 decimalen kan ik de ID erachter plakken als 3de,4de,5de,... decimaal getal. Dan ben ik zeker dat ze uniek zijn...
Zou dit dan helpen?

Rvl

Legacy Member
je zou idd met de unieke id van elk object kunnen werken. Let wel als je hiermee werkt dat je rekening moet houden met de lengte van je keys in je array. Kies je offset waarde dus groot genoeg 10^2 of 10^3 zelfs (indien je met grote object arrays bent aan het werken.
Misschien is er nog een simpelere manier maar ik kan er niet direct opkomen.

Obliv`

Legacy Member
Ik ken weinig tot niets van PHP, maar kan je geen compareTo functie in je klassen steken in PHP?

Rvl

Legacy Member
Dat zal niet meteen sneller werken en meer code met zich meebrengen.

dJeez

Legacy Member
Gebruik toch gewoon de sort functies van PHP waar je op basis van een user defined functie kan sorteren (met name usort, uksort of uasort).

Er staat zelfs een voorbeeld bij dat uitlegt hoe je het kan doen met objecten èn hoe je een object method als user definied functie kan gebruiken.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan