Hallo,
Deine Lösung sollte viel früher ansetzen.
(an dieser Stelle setzen meistens schon einige Negativvoter ein, ...)
Überlege, ob nicht bereits die Datenbankabfrage die richtige™ Lösung liefern könnte.
Das hängt jedoch davon ab, ob (in M$-Speech) die originäre Abfrage ein Dynaset oder einen Snapshot darstellt, ob also Veränderungen am Datenbestand im Backend zwischen den einzelnen Darstellungen am Frontend dargestellt oder ignoriert werden sollen.
Wenn sie ignoriert werden sollen, könnte man ebenfalls entweder mit einer Temporärtabelle im DBMS arbeiten, oder aber einer Kopie der Daten in der API, bei Dir also im PHP-Modul.
Wenn Du die Sortierung im PHP-Modul vornehmen willst, dann wäre bei eindimensionaler Sortierung, bei der aber die Sortierspalte leicht umschaltbar bleiben soll, ein "Spaltenarray" anstelle eines satzorientierten (siehe Archiv, im Wiki leider unauffindbar) eine praktikable Lösung.
Wenn allerdings nach mehreren Spalten sortiert werden soll, dann könnte man zwischen einer hinterlegten Sortierfunktion auf ein Satzarray ("Backreferenz"), oder einer redundanten Spalte, bestehend aus den Einzelsortierungen aus dem Spaltenarray, die dann ihrerseits sortiert wird, wählen. Für die Entscheidung sind die Datenmenge und die erforderlichen Sortierungen maßgeblich. Die generischen Sortierfunktionen in PHP sind um ein Vielfaches schneller (und bequemer anzuwenden), als eine per Backreferenz erstellte eigene Sortierfunktion. Außerdem benötigen die generischen Sortierfunktionen nebst "Spaltenarray" (erheblich) weniger Speicher.
Erste Frage sollte also immer sein: Kann es nicht bereits das DBMS leisten?
Zweite Frage könnte sein, wie lange die Sessiondaten für diese Views benutzt werden sollen.
Die dritte Frage könnte sein, wieviel Mut man hat, gute (bitte immer im Einzelfall testen) kreative Lösungen gegenüber oft benutzten (häufig leider mit "best practise" bezeichneten) mangelhaft nachkalkulierten Lösungen vorzuziehen.
Und nicht zu vergessen wäre die Möglichkeit, die Sortierung bei Irrelevanz für das Backend, überhaupt im Frontend mittes JavaScript vorzunehmen.
LG +Gesundheit
Localhorst