Tach!
Die Vorteile habe ich jetzt mehrfach erläutert und leider habe ich immer noch kein fundiertes Kontra-Argument von dir gelesen.
Es ist in vielen Fällen einfach nicht notwendig, einen fortlaufend nummerierten Schlüssel zu haben. Es gibt foreach, mit dem man durch die Menge laufen kann. Die Frage ist, ob man eine Vorteil aus dem Key ziehen kann. Das ist lediglich der Fall, wenn man positionsorientiert zugreifen möchte. Wie häufig braucht man das? Ich denke, es ist weitaus mehr nützlich, wenn man den Primärschlüssel aus der Datenbank als Key verwendet, dann kann man auch in PHP direkt auf bestimmte Datensätze zugreifen (deren Primärschlüssel man kennt) und muss sie nicht umständlich mit durch Iterieren oder ähnliche Methoden suchen.
$foo = array();
$foo[1] = 'bar';
$foo[0] = 'baz';Wenn ich dich nun fragte, was das 0-te Array-Element ist, was würdest du antworten?
Nun, wenn man "x-te" sagt, meint man üblicherweise eine Position, die man durch Abzählen erhält. Auch wenn du hier mit 0 statt der geläufigeren 1 anfängt, ist das 0-te Element eindeutig das an erster Position, also das was man auch mir reset() bekommt.
Sagst du 'bar', sag ich 'baz', weil ich das Element mit dem Schlüssel '0' meinte. Sagst du 'baz', sag ich 'bar', weil ich das Array an Position '0' meinte.
Diese Verwechslung scheint mit ziemlich konstruiert und löst sich durch korrekten Sprachgebrauch in Luft auf. Das x-te Element wird durch Abzählen ermittelt, bei "Element x" hingegen ist es das Element mit dem Namen/Schlüssel x.
Im Allgemeinen läuft eine MySQL-Ergebnismenge übrigens auch nicht mit einer ID auf, und spätestens dann müsstest du sowieso von deiner Konvention abweichen. Ich bevorzuge da Coding-Konventionen, die robuster sind.
Eine Konvention sollte nicht allein einem Selbstzweck gerecht werden, sondern auch einen praktischen Nutzen haben. Besser fände ich es, wenn du die Konvention erstmal außen vor lässt und würde es begrüßen, wenn du statt hauptsächlich theoretischen Erörterungen mehr anhand von praktisch anwendbaren Beispielen die Geschichte durchleuchten würdest.
Der Primär-Schlüssel ist nunmal eine Maßnahme, die im Kontext von relationalen Datenbanksystem zweckmäßig ist, weil Zeilen schnell identifiziert werden können und man damit ein Merkmal hat, um Relationen zwischen verschiedenen Tabellen zu definieren. Meiner Meinung nach ist dieser Primärschlüssel ein privates Implementations-Detail des Datenbank-Entwurfs und ich sehe keine technische Notwendigkeit diesen Schlüssel zu zweckentfremden und auch in PHP als Array-Schlüssel wiederzuverwenden.
Und warum sollte man diesen Schlüssel nicht zum schnellen Zugreifen unter PHP nutzen können/dürfen? Ich finde ihn selbst dann nützlich, wenn man die Relationen des DBMS in eine direkt referenzierende Objektstruktur zu bringen gedenkt. Wenn man solchen eine baumähnliche Struktur aufzubauen gedenkt, muss man zunächst wissen, wo man die Datensätze aus der flachen Ergebnismenge einzuhängen hat. Ein zugriff per ID ist dabei wesentlich einfacher also die Elemente durch Iteratione zu suchen.
dedlfix.