anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 19:01

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 16:17 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
Hey!

Habe in der SuFu nichts gefunden.. Oder habe einfach nichts richtiges eingegeben..

Weiß nicht mehr in welchem script, aber da habe ich sowas auf die Art gesehen:
$this->bbcode_second_pass_code('', 'switch ($_GET['op']);

case ""

output("Text1");

break;

case "1"

output("Text2");
break;')

So.. Wollte jetzt wissen, worin der Unterschied zwischen

$this->bbcode_second_pass_code('', 'if ($_GET['op']=""){
output("Text1");
}
elseif ($_GET['op']="1"){
output("Text2");
}
')

Ist das erstere jetzt "richtiger" (wie z.b. anstatt $session[user][gold] eben $session['user']['gold'] ) oder hat das auch Performance Gründe? dass z.b. die ewig vielen If-Abfragen das Skript langsam machen?

Danke schonmal für Antworten ;)

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 16:59 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Aus meiner persönlichen Erfahrung würde ich folgendes sagen: Ein switch-Konstrukt läuft grundsätzlich etwas schneller als ein if-else-Konstrukt. Ausserdem finde ich, dass ein switch-Konstrukt oft auch etwas übersichtlicher aussieht, und eine gute Struktur bietet.

Allerdings muss man auch sagen, dass der Geschwindigkeitsunterschied nicht gross ist, und es - gerade bei LoGD - keine spürbaren Unterschiede gäbe.

Im übrigen kannst du es nicht mit "$session['user']['gold']" und "$session[user][gold]" vergleichen. Die Single-Quotes in einem Array sollten dastehen, damit PHP den Wert nicht als Konstante interpretiert ( Wirft sonst einen Notice-Fehler ).

Im Übrigen ist ein switch-Konstrukt eher so aufgebaut ;-)
$this->bbcode_second_pass_code('', 'switch( $_GET['op'] ) {
case 'bla':
output( 'Bla' );
break;

default:
output( 'Blabla' );
break;
}')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 17:07 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
Da war wohl jemand schneller, allerdings stimme ich dem allen zu.

Und um weitere NOTICE zu vermeiden, sollte

switch(isset($_GET['op'])) {

verwendet werden, falls 'op' nicht gesetzt ist ^^


Ach ja. Wer noch Zeilen sparen will, kann sich im switch das letzte "break;" sparen.

Und noch etwas.
$this->bbcode_second_pass_code('', '
if($_GET['op']=="bla" || $_GET['op']=="blub"){}
')
ist gleich
$this->bbcode_second_pass_code('', '
switch(isset($_GET['op'])) {
case"bla":
case"blub":
output();
break;
default:
output();
break;
}
')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 17:18 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
Danke für die schnelle Antwort ihr beiden :)


Harthas hat geschrieben:
Im Übrigen ist ein switch-Konstrukt eher so aufgebaut ;-)
$this->bbcode_second_pass_code('', 'switch( $_GET['op'] ) {
case 'bla':
output( 'Bla' );
break;

default:
output( 'Blabla' );
break;
}')


Ok danke ;)

Hartas hat geschrieben:
Im übrigen kannst du es nicht mit "$session['user']['gold']" und "$session[user][gold]" vergleichen. Die Single-Quotes in einem Array sollten dastehen, damit PHP den Wert nicht als Konstante interpretiert ( Wirft sonst einen Notice-Fehler ).


Ok.. dann muss ich mal eine .php durchschaun.. Wirft mir nämlich 100 Notice-Fehler aus (sehr grob gerundet :D)

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 17:23 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Ja, du kannst da natürlich isset verwenden. Oder empty.

LoGD Notice-frei zu kriegen ist übrigens eine ziemliche Anstrengung. Untenstehender Link könnte dir allerdings bei der Auswertung der Fehlermeldungen helfen.
http://www.php-fehlermeldungen.de/topicmenu1/index0.html


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 18:16 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
Harthas hat geschrieben:

LoGD Notice-frei zu kriegen ist übrigens eine ziemliche Anstrengung.


Neu schreiben ist leichter ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 22:10 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
Welv hat geschrieben:
Harthas hat geschrieben:

LoGD Notice-frei zu kriegen ist übrigens eine ziemliche Anstrengung.


Neu schreiben ist leichter ^^


:lol: Aber ich glaub dann nimmt jeder die Notice Fehler hin, oder? ;)

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 23:19 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
Patzue hat geschrieben:
Welv hat geschrieben:
Harthas hat geschrieben:

LoGD Notice-frei zu kriegen ist übrigens eine ziemliche Anstrengung.


Neu schreiben ist leichter ^^


:lol: Aber ich glaub dann nimmt jeder die Notice Fehler hin, oder? ;)


Nicht jeder, ich schreib grad neu ;) Aber im Grunde kann man sie hinnehmen. Ich würde nur keine Addons veröffentlichen die Solche Fehler haben, da es auch viele php-Anfänger bei LoGD gibt, die diese Fehler dann als richtig erlernen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Sa 12 Dez, 2009 23:34 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
Welv hat geschrieben:

Nicht jeder, ich schreib grad neu ;) Aber im Grunde kann man sie hinnehmen. Ich würde nur keine Addons veröffentlichen die Solche Fehler haben, da es auch viele php-Anfänger bei LoGD gibt, die diese Fehler dann als richtig erlernen.


Uii :D

Joa.. Bis ich ein Addon veröffentliche.. Ich glaube, dass das noch ne Weile dauern wird ;)

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: So 13 Dez, 2009 13:12 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 16 Jul, 2005 22:40
Beiträge: 693
Wohnort: /var/server/home/castle
Geschlecht: Männlich
LoGD: http://www.kokoto.de/
Skype: Apfelschokowodkakekskuchen
Harthas hat geschrieben:
Ja, du kannst da natürlich isset verwenden. Oder empty.

LoGD Notice-frei zu kriegen ist übrigens eine ziemliche Anstrengung. Untenstehender Link könnte dir allerdings bei der Auswertung der Fehlermeldungen helfen.
http://www.php-fehlermeldungen.de/topicmenu1/index0.html



Darf ich mich da kurz einklinken? ^^

ist es denn nun egal ob ich: if (isset($PATH_INFO) != '') { oder if (empty($PATH_INFO) != '') {

schreib und würde das isset irgendwas an der funktionalität von $PATH_INFO ändern oder einfach nur den NOTICE unterdrücken?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: So 13 Dez, 2009 13:49 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Hi

Erstmal eine wichtige Sache vorweg: empty und isset liefern als Ergebnis nur Bool'sche Werte, also true oder false. Damit macht $this->bbcode_second_pass_code('', 'switch(isset($_GET['irgendwas'])) {
case 'a':
//tu was
case 'b':
// tu was anderes
}') keinen Sinn, da 'a' oder 'b' nie erreicht werden. Für empty gilt selbes.

Meine Vorgehensweise zur Vermeidung von NOTICE-Fehlern ist:
$this->bbcode_second_pass_code('', '
$op = isset($_GET['op']) ? $_GET['op'] : ''; // Wobei man '' durch den Default-Wert seiner Wahl ersetzen kann.

if($op == 'blah') { /* Inhalt */ }
// bzw.
switch($op) {
case 'a':
// ...
}')

Bei einer einzelnen If-Verzweigung kann man das natürlich auch in der If-Kondition checken und braucht keine extra Variable, aber das Prinzip sollte verständlich sein. Das ganze lässt sich natürlich auch auf jede andere Variable, egal ob $_GET['blah'], $_POST['blah'], $irgendwas oder wie auch immer übertragen.

Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: So 13 Dez, 2009 14:05 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
Auric hat geschrieben:
Hi

Erstmal eine wichtige Sache vorweg: empty und isset liefern als Ergebnis nur Bool'sche Werte, also true oder false. Damit macht $this->bbcode_second_pass_code('', 'switch(isset($_GET['irgendwas'])) {
case 'a':
//tu was
case 'b':
// tu was anderes
}') keinen Sinn, da 'a' oder 'b' nie erreicht werden. Für empty gilt selbes.



deswegen nimmt man auch ein

switch(){
default:
output();
break;

}

ins switch =)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: So 13 Dez, 2009 14:58 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Bei einem "switch(isset($_GET['irgendwas'])) {" wird meines Wissens nach einfach der erste switch-Block angewählt (Wenn isset true zurück gibt ).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: So 13 Dez, 2009 15:30 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
switch prüft nur auf Gleichheit - also ja, es wird der Erstbeste Block angewählt, der nicht 0, false oder NULL ist. Deshalb dürfte das ganze besser so sein (So, wie ichs mache):

$this->bbcode_second_pass_code('', 'switch(isset($_GET['op']) ? $_GET['op'] : '') {
case '':
default: {
break;
}

case 'one': {
break;
}
}')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Do 07 Jan, 2010 18:17 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
Hey!

Habe noch ne frage dazu. Wie mach ich denn dann den addnav dazu?

aslo um z.b. zum case b zu kommen? würde dann der addnav dennoch

addnav("Zu case b","file.php?op=b");

oder?

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Do 07 Jan, 2010 19:08 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
jop


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: switch $_GET['op']
BeitragVerfasst: Fr 08 Jan, 2010 12:55 
Offline
Held
Held

Registriert: Fr 17 Okt, 2008 20:06
Beiträge: 253
Geschlecht: Männlich
LoGD: off
k thx

_________________
Wenn ihr mir sagt wie ich es als Datei hochlade, dann kann ich die Source hochladen die ihr wollt .D


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 19 Gäste


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
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum