Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 13. Dezember 2014 13:38
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
[GELÖST] Objekte sortieren
Hallo,
komme mal wieder mit Smarty/PHP nicht weiter.
Mit ListIt2 habe ich eine Menge Einträge erfasst, die alle über ein Zusatzfeld "Datum" verfügen. Jetzt möchte ich die Einträge vor der Ausgabe nach diesem Feld sortieren. Allerdings ist jeder Eintrag erst mal ein Objekt, das wiederum die Zusatzfelder in einem Array enthält, welcher dann wieder einen Array mit "name", "value" und "type" enthält. Und genau nach diesem "value" möchte ich die Objekte nun sortieren :-).
Ich habe mir schon verschiedenen Lösungen angeschaut, aber die Meisten sortieren keine multidimensionalen Arrays (und schon gar nicht in Verbindung mit Objekten). Die ListIt-eigene Funktion lässt ein Sortieren nach Zusatzfeldern leider nicht zu.
Gibts da einen Weg? Habs auch schon über die Toolbox (tbArraySort) probiert, aber erfolglos ...
Offline
#2 13. Dezember 2014 14:02
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Objekte sortieren
Danke Goran! (auch wenn er es wahrscheinlich nicht mehr liest).
Das hier hat mich enorm weiter gebracht: http://www.i-do-this.com/snippets/Sorti … foreach/56
ABER:
Das Datum ist leider im Format %d.%m.%Y und nicht als String hinterlegt - dadurch wird erst nach Tagen sortiert (01.02., 01.03., 02.01. usw.). Wie ich es in Smarty und PHP umwandeln kann, weiß ich (strtotime) - aber mein UDT sieht so aus:
[== PHP ==]
if (!function_exists('do_sort')) {
function do_sort($a, $b) {
return $a->fielddefs[datum][value] < $b->fielddefs[datum][value];
}
}
$data = $params['data'];
usort($data, 'do_sort');
$smarty->assign('sorted', $data);
Kann ich da den value schon ändern oder muss das vorher passieren? Wenn das läuft, dann hab ichs :-).
Beitrag geändert von jeff1980 (13. Dezember 2014 14:03)
Offline
#3 13. Dezember 2014 14:21
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Objekte sortieren
Selbstgespräch :-)
Es klappt nun mit
[== PHP ==]
if (!function_exists('do_sort')) {
function do_sort($a, $b) {
return strtotime($a->fielddefs[datum][value]) < strtotime($b->fielddefs[datum][value]);
}
}
$data = $params['data'];
usort($data, 'do_sort');
$smarty->assign('sorted', $data);
Manchmal ist es echt einfacher als man denkt.
Edit: Der Vollständigkeit halber noch für die Ausgabe:
[== SMARTY ==]
{sort data=$items}
{foreach from=$sorted item=item}
...
{/foreach}
Beitrag geändert von jeff1980 (04. November 2015 13:06)
Offline
#4 13. Dezember 2014 18:22
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Objekte sortieren
Danke fürs Selbstgespräch und deine Lösung !
Offline
Seiten: 1