Schönen guten Tag dedlfix,
Du solltest auch bei Variablen versuchen, die Dinge bei ihrem richtigen Namen zu nennen, damit deine Absicht deutlicher wird (für andere und dein anderes Ich, das vier Wochen später auf den Code schaut und ihn zu verstehen versucht), was du in dieser Variable abzulegen gedenkst.
das sehe ich auch so, ich bin jetzt allerdings absichtlich 1:1 bei den Namen geblieben, damit sichergestellt ist, dass wir auch immer von der selben Sache sprechen.
Dann sollte dir auffallen, dass du $number nicht unbedingt extra speichern musst, sondern dass sie schon in einer Variablen steht.
Das war noch ein rudimentärer Code aus meinem Labor. Ich hatte, als ich Dein Beispiel getestet habe, die Variable $number mit "Keine Nummer gefunden" vordefiniert und mir am Ende des Skripts ausgeben lassen. Somit stand da dann entweder eine Nummer oder, wenn ich den Suchbegriff absichtlich falsch genommen habe, ein "Keine Nummer gefunden". Du selbst hast mich ja gelehrt, man soll immer sämtliche Teile eines Skripts in allen möglichen Szenarien durchtesten, um zu sehen, was passiert! =)
Es reicht dann statt der Zuweisung ein einfacher Abbruch
In diesem speziellen Fall habe ich maximal 5 bis 10 solcher "Datensätze". Da kann ich das komplette Durchlaufen der Schleife verkraften.
Allerdings hat die Geschichte auch noch einen Haken, den ich bei meiner vorherigen Antwort noch übersehen hatte. Was ist, wenn kein User gefunden wird?
Dafür folgt dann nach dem IF noch ein ELSE.
$number vor dem foreach um eine Initialisierung ergänzt werden, sonst ist diese Variable nach einem Nicht-Finden nicht existent
Das habe ich ja, wie gerade geschrieben, eh gemacht.
was beim nächsten Lesezugriff mindestens eine Notice-Meldung verursacht, wenn das error_reporting auf E_ALL steht.
Wenn ich an einem Skript arbeite, dann steht bei mir bis zur Fertigstellung _immer_ ein error_reporting(E_ALL|E_STRICT);
im Header!
Mit lieben Grüßen
H. Wolowitz
Gut, dann können wir die Zettel von den Laternen nehmen...