Moin!
Die Warnstufe ist dehalb höher, als bei if $gibtsnet, weil das mit NULL oder als zahl 0 angenommen werden kann, auch wenn das unsauber ist.
Den Satz verstehe ich nicht. Genauer: den Teil ab weil.
Ein
[...]
erklärt Dir das.Nein, irgendwie nicht. Ich sehe den Zusammenhang mit foreach nicht. Wofür steht das "das" hinter dem "weil"?
Ganz einfach: Die einfache Variable $gibtsnet (bezeichnet als "das") wird, wenn sie nicht besetzt ist, in Operationen kontextabhängig als NULL, 0, '' (leerer String) oder false angenommen.
Der Zusammenhang mit foreach ist ein negativer: Ein leerer Array wird eben nicht angenommen, darin besteht der Gegensatz und der Unterschied in der ausgelösten Warnstufe (Notice <-> Warning)
Was ist und warum unsauber?
Das ist ja wohl klar. Eine Variable, deren Herkunft (also Inhalt) ungeklärt ist verwendet man nicht einfach so. Das führt zumindest zu einer schlechteren Pflege des Codes. Stell dir vor, ein Programmierer braucht mal eben einen leeren String ('') und hat gerade nur eine Hand frei (Fettbemme in der linken), will keine Umstände mit der Festelltaste haben, kann sich aber mittels Maus ein bis dato unbenutzes $str irgenwoher kopieren und benutzt es als leeren String in Zeile 14267 einer includierten Datei... später soll jemand dieses hübsche Skriptmonster verhübschen oder diesem Funktionen hinzufügen oder Disfunktionen reparieren.... viel Spaß!
In Perl gibts zur Verhinderung derlei Murkses die Option -w (zu verwenden beim Aufruf oder in der shebang), in VBA gibts 'option explicit', in vielen anderen Programmiersprachen löst sowas stets eine zum Abbruch führende Exception aus.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development