1UnitedPower: Datensatz aus Datenbank in array schreiben

Beitrag lesen

Meine Herren!

würde aber für [] bei jedem Schleifendurchlauf ein neues Increment eines Index einführen, der total überflüssig ist.

Das sehe ich anders, die Datenbank-Schlüssel müssen sich nicht ausdrücklich in unseren Array-Schlüsseln wiederspiegeln. Automatische Array-Schlüssel haben den Vorteil, dass sie numerisch, fortlaufend und lückenlos sind. Vom Datenbank-Schlüssel kann man das im Allgemeinen nicht behaupten.

Wozu soll der neue Schlüssel taugen?

Das habe ich doch erklärt, oder? Nochmal:

  1. Der Schlüssel ist ganzzahlig. Es ist einfacher über eine Zahl zu sprechen als zum Beispiel über eine kryptische Zeichenfolge a la '6ccd780c-baba-1026-9564-0040f4311e29'. Das ist ein Extrem-Beispiel, in den meisten Fällen, wird vermutlich ein Auto-Increment-Schlüssel verwendet, aber im Allgemeinen kann man davon nicht ausgehen.

  2. Der neue Schlüssel ist fortlaufend und lückenlos. Er entspricht der Position im Array. Das macht im Kontext von PHP intuitiver.

Für die üblichen relationalen Operationen auf Arrays( array_map, array_reduce, array_filter usw.) verhält sich keine der beiden Varianten signifikant schlechter oder besser.

Dann musst Du eben den datentechnisch sinnvolleren Weg gehen, und ein "Spaltenarray" aufbauen.

Was ist daran sinnvoller? Ich finde Spaltenarrays unnatürlich und deine kleine Funktionssammlung bestätigt mich darin, dass man es sich unnötig kompliziert macht. Ich kann beim besten Willen keinen Vorteil erkennen.

Das habe ich hier ja oft genug beschrieben und die vier Standardfunktionen dafür auch hier veröffentlicht. Da würden dann alle Standard-Array-Funktionen auf Anhieb funktionieren und man könnte außerdem die Ausgabe nach jeder Spalte ohne großen Aufwand sortieren.

Zeilenarrays lassen sich auch ohne großen Aufwand nach Spalten sortieren. Nehmen wir an, wir haben ein Zeilenarray $mitarbeiter und wollen diese nach ihrem Alter sortieren:

usort( $mitarbeiter, function( $a, $b ){  
   return ( $a->alter <= $b->alter ) ? -1 : 1;  
});

Hier dann noch ein komplementäres Beispiel zu deiner Funktionssammlung, wie man mit Zeilenarrays arbeiten kann:

// Datensatz einfügen:  
$mitarbeiter[] = new Mitarbeiter();  
  
// Datensatz auslesen:  
$werner = &$mitarbeiter[ 0 ];  
  
// Datensatz updaten:  
$werner->alter = 43;  
  
// Datensatz löschen:  
unset( $mitarbeiter[0] );
--
“All right, then, I'll go to hell.” – Huck Finn