Basilius-Network

Das offizielle Forum zum Basilius-Network und aller Komponenten.
Aktuelle Zeit: Di 7. Sep 2010, 20:34

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Undefinierte Array-Schlüssel und Variablen
BeitragVerfasst: Mo 9. Jul 2007, 17:23 
Offline
Administrator

Registriert: Do 24. Mai 2007, 21:18
Beiträge: 35
Wohnort: Riehen (CH)
Engelsreich-Charakter: Charakter vorhanden
Charakternamen: Sefardius, Schlumpf, Testi
Code:
Notice: Undefined index: Banane in ~/test.php on line 3


Zwei weitere Ursacher von Notizen, die es zu beheben gilt. Denn die Notizen weissen darauf hin, das etwas falsch laufen könnte, oder sogar Sicherheitslücken beherbergt. Diese Notiz ensteht bei folgendem Stück Code:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if($var['Banane'] == "") {
  $var['Banane'] = 'Dunkelgelb';
}
?>


Es wird versucht auf den Index "Banane" zuzugreifen, dieser aber existiert nicht. Es ist im Grunde das ähnliche wie der versuchte Zugriff auf eine Variable, die es nicht gibt. Beide Fälle kann man mit 2 verschiedenen Sprachkontrukten entgegen treten (Es sind nicht wirklich Funktionen). Das erste Konstrukt, isset(), prüft, ob eine Variable oder ein Array-Schlüssel existiert. Dabei könnte man oberer Code so schreiben:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if(isset($var['Banane']) == false) {
  $var['Banane'] = 'Dunkelgelb';
}
?>

Allerdings tritt der Fall nicht ein, sollte es "Banane" geben, sie ist aber leer. Natürlich könnte man da so etwas schreiben:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if(isset($var['Banane']) == false OR $var['Banane'] == '') {
  $var['Banane'] = 'Dunkelgelb';
}
?>

Es ist aber unschön und lässt sich kürzer und logischer schreiben. Dazu benötigen wir den Konstrukt empty(). empty() prüft, ob eine Variable leer ist. Leer ist eine Variable dann, wenn sie nicht gesetzt ist, wenn sie NULL, 0, '', "", false oder "\0" ist. Und sie wirft, wie isset, keine Notiz, wenn es die Variable oder den Array-Schlüssel nicht gibt. Das Beispiel verkürzt sich also wieder:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if(empty($var['Banane'])) {
  $var['Banane'] = 'Dunkelgelb';
}
?>


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de