php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.10.2006, 10:53  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard was ist an schreibweise hierfür korrekt? funktioniert beides

PHP-Code:
<?php
$a 
'xyz';
if(
$a) echo 'ja';
?>
ad zeile 1:
ich muss also nicht if(isset($a)) schreiben? hier im oben beschriebenen fall würde ja auch nicht ausgegeben wenn $a = ''. sprich !isset und !empty

ist die schreibweise so also korrekt?

ad zeile 2:
ist das auch GANZ korrekt? denn es ginge ja auch nach lehrbuch:
if($a) echo 'ja';
oder laut lehrbuch:
if($a) { echo 'ja'; }
echo $a ? 'ja' : '';

was ist denn nun wirklich korrekt? oder ist alles ok?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.10.2006, 11:10  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Wenn die Variable undefiniert ist bekommst du ohne isset() ein "Notice".
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 21.10.2006, 11:16  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

bei <?php if($a) echo 'ja'; ?>

bekomme ich gar nix? was meinst du mit notice?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 21.10.2006, 11:30  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

ja weil du Notices wahrscheinlich abgeschalten hast.

<?php
error_reporting(E_ALL);
if($a) echo 'ja';
?>

....
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 21.10.2006, 11:50  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und hier noch was für die { klammern:

PHP-Code:
//Wenn du einen Befehlsblock ausführen willst:
if($a){
  print 
"BLUB";
  
$zaehlvariable++;
}
// Wenn du nur einen Befehl ausführen willst:
if($a) print "BLUB"

mfg
Andi
DER_Brain ist offline  
Alt 21.10.2006, 13:38  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

1. Sache

PHP-Code:
<?php
if ($a)
// oder
if (isset($a))
?>
Da kommts jetzt auf denn Fall drauf an.
Wenn du sicher gehen kannst dass $a gesetzt ist brauchst du kein isset().
Z.b. bei:
PHP-Code:
<?php
if ($test == 1$a 'a';
else 
$a 'b';

if (
$a == 'a')
?>
Hier ist $a definitiv gesetzt! Daher kein isset() nötig. Wenn du aber z.B. einer Usereingabe hast brauchst du isset() um eben eine NOTICE zu vermeiden:
PHP-Code:
<?php
if (isset($_GET['a']) AND $_GET['a'] == 1)
?>


2. Sache

PHP-Code:
<?php
if($a) echo 'ja';
// oder
if($a) { echo 'ja'; }
// oder
echo $a 'ja' '';
?>
Hier ist völlig egal was du verwendest! Alles funktioniert.
- Ohne geschweifte Klammer geht nur wenn du einen Befehl hast, bleibt schön übersichtlich wenn du keine { } schreiben musst.
- Mit geschweiften Klammern brauchst du wenn du im IF mehrere Befehle hast, eigentlich der Normalfall.
- die Kurzschreibweise verwende ich persöhnlich garnicht da ich sie nicht sehr übersichtlich finde. Bei IF ... ELSE seh ich sofort was wann passiert, bei ? ... : muss ich erstma nen zweites mal hinguggen.
Flor1an ist offline  
Alt 21.10.2006, 15:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

wenn er sicher gehen kann daß $a gesetzt ist braucht er (fast) keine Abfrage if ($a) oder? Es sei denn a ist bool.
Für Bool würde ich stets (isset($a) && $a==true) nutzen, sonst (!empty($a))
Ansonsten empfehle ich einen Blick hierein. Das beschreibt die Reaktion bei den verschiedenen Vergleichen. Das mit den Klammern wurde gerade hier weiter unten beschreiben.
Die letzte Schreibweise, der sogenannte Trinär-Operator kann manchmal recht praktisch sein, z.B.
Code:
echo sprintf ('Die Funktion lieferte %d %s' ,
                     $Anzahl , 
                     ($Anzahl!=1)
                       ? 'Ergebnisse'
                       : 'Ergebnis' 
                     );
Die Übersichtlichkeit kommt mit der richtigen Code-Formatierung.
nikosch ist offline  
Alt 21.10.2006, 17:59  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich versuche bei Bedingungen möglichst einen boolschen Wert zu erzeugen.
$a ist ja nur TRUE, weil es in BOOL konvertiert wurde. Da kann auch schnell mal was schiefgehen, wenn $a "0" ist o.ä.

isset($a) bzw. empty($a) finde ich da eleganter, es springt gleich ins Auge was ich möchte.

Zu den geschweiften Klammern: Ich setze sie immer, weil ich so oft Debug-Ausgaben mache - so lausig sind meine Skripte ja und nen Debugger benutz ich auch nicht - dass ich oft fehlende geschweifte Klammern sowieso nachtragen muss.

auf ? : benutze ich kaum, 1. wieder wegen Debug, 2. weils einfach unschön aussieht
Warum Codezeilen sparen, wenn ich dadurch den Code schlechter verstehe. Ausnahmen gibts natürlich immer.
Zergling-new ist offline  
Alt 22.10.2006, 17:41  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

hi leute. danke für eure antworten. bei mir geht es um $_GET[] sachen. wenn ich eine $_GET[] variable bekomme, so prüfe ich sie immer ganz oben im script und schreibe sie in eine handliche "normale" variable, welche ich dann sofort auf possibilität prüfe und falls irgendwas nicht stimmt mit unset() kille. weiter unten dann im code habe ich if($variable) ...

also muss ich in diesem falle if(!isset($variable)) weil es dann korrekt ist und kein notice ausgegeben wird. danke für diese information! hatte das nicht bemerkt, da ich error_reporting nicht auf E_ALL hatte. *rotwerd*

danke auch für die info zur schreibweise von if() { befehl }, if() befehl und ? :

danke nochmal für die infos! werde bezüglich der schreibweise wirklich die version nehmen die es dann bezüglich späterer lesbarkeit einfacher, bzw. besser sichtbar macht.

// ergänzung: wenn ich die variable kille und unten dann schaue ob vorhanden und/oder gefüllt, so ist es doch besser ich schreibe gleich if(!empty($variable)) anstatt if(!isset($variable) && !empty($variable)), denn dann erübrigt sich das mit isset ja von selber. für mich bzw. mein script relevant ist immer nur wenn die variable einen wert enthält.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 22.10.2006, 17:58  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Promaetheus
danke auch für die info zur schreibweise von if() { befehl }, if() befehl und ? :
Auch wenn es hier nicht so richtig deutich geschrieben wurde, ist ?: nicht einfach eine andere Schreibweise für ein if{}else{}

Ersteres ist ein Ausdruck und hat einen Wert. Entsprechend kann er überall verwendet werden, so man einen Wert anzugeben hat.

Letzteres ist eine Anweisung. Sie hat keinen Wert.

Welche Lösung übersichtlicher ist, kommt auf den Einzelfall an. Pauschal die ?: Variante als unübersichtlicher zu bezeichnen wäre IMHO vollkommener Unsinn.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
hierfür schreibweise, denn das auge isset mit, schreibweise: danke für die info, schreibweise beides, schreibweise hierfür, schreibweise von hierfür, http://www.php.de/php-tipps-2006/42592-ist-schreibweise-hierfuer-korrekt-funktioniert-beides.html, was bedeutet die kurzschreibung a.d

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:21 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.