dedlfix: Arrays sortieren

Beitrag lesen

Hi!

Wenn es darum geht, wie man etwa Datensätze aus einer Datenbank repräsentiert, *dann* könnte man von so etwas wie Zeilen- oder Spaltenrepräsentierung der Datensätze sprechen. Was dann beschreibt - klar - wie die Datensätze angeordnet sind. (!: Die Repräsentierung ist ..orientiert, nicht das PHP-Array. Vielleicht ein kleinlicher Unterschied, aber um den geht es mir ein bisschen).

Wenn du noch mal meine erste Antwort anschaust, dann sprach ich schon von einer Organisation der Daten nicht von einem Array. Diesen Unterschied habe ich also in der Formulierung schon beachtet, auch wenn ich mir dabei weniger Gedanken darüber gemacht habe als in der jetzigen Diskussion.

Und natürlich kann hier auch drüber diskutieren, ob das Array-Design des OP gut ist, da spricht ja nichts gegen. Aber ungeachtet dessen geht es (ihm) ja darum, zu verstehen, wie man in PHP das macht, was er machen will.

Und da muss man nicht nur die technische Seite der Arrays betrachten sondern auch die Organisation seiner Daten darin, denn das ist entscheidend für das Verstehen und für das Arbeiten damit, auch abseits von eventuell vereinfachter Sortierung bei einer anderen Anordnung (der Daten in den Arrays). Denn es sind einige Besonderheiten zu berücksichtigen, wie das Beachten der Schlüssel als bindendes Element und dass die Schlüssel-Wert-Zuordnung deswegen nicht verloren gehen darf.

Und im reinen Kontext von PHP - man hat ein gegebenes Array und möchte es sortieren - kann man die Begriffe "zeilenorientiert" etc. ersatzlos streichen.

Richtig, nicht das Array ist xy-orientiert, sondern die jeweils eine Einheit bildenden Daten sind xy-orientiert auf die Arrays verteilt. (Und wenn Daten eine Einheit bilden, ist durchaus auch jenseits von DBMSen der Begriff Datensatz populär.) Und um das kurz auszudrücken gibt es statt der Formulierung "Arraystruktur mit zeilen/spaltenorientierter Anordnung der jeweils zusammengehörigen Daten" die Kurzformen Zeilenarray und Spaltenarray (oder englisch: array of rows/columns).

Solche Begriffe mogeln sich irgendwie dann heimlich ins Spiel, wenn man von multidimensionalen Arras spricht,

Ich spreche aber nur sehr selten von multidimensionalen Arrays unter PHP, weil es diese rein technisch nicht gibt. Auch hier ist es wieder nur eine Sache der Repräsentation. Es sieht nur multidimensional aus, in Wirklichkeit ist es nur ein Array von Arrays.

aber bei den Sortierungsfragen macht man sich das Leben viel leichter, wenn man das vermeidet. Dann kann man nämlich erheblich klarer formulieren, was man eigentlich will.

Der Mensch erfindet spezielle Begriffe, weil er nicht jedes Mal in voller Klarheit den Sachverhelt schildern will. Wenn ihm das Spaß machte, würde ihm ein Binärsystem zur Verständigung reichen. Andererseits sind einem Neuling diese Fachbegriffe nicht geläufig, dann sollte er sie lernen, in seinem eigenen Interesse, denn nur so ist eine effiziente Kommunikation möglich.

  • ein Array, das man sortieren will (wie der OP) -> (u)sort
  • ein Array, das man *nicht* sortieren will, aber dessen Felder (die Arrays sind) man simultan sortieren will -> array_multisort

Nun weiß ich aber aus der Erfahrung, dass jemand, der solche Fragen stellen muss, sich eher nicht haargenau seine wirklichen technischen Gegebenheiten anschaut, sondern mehr abstrakt auf seine Daten. Und da ist es für das Verständnis doch hilfreich, wenn man dabei die Repräsentationsformen mit berücksichtigt.

Lo!