Übungsbeispiele

Alles, was PHP betrifft, kann hier besprochen werden.

Übungsbeispiele

Postby HighFive » 02. May 2006 05:27

Hi
Ich versuche mich etwas in PHP4 einzuarbeiten, bin absoluter Anfänger und habe mich ans Studium des Buches "Jetzt lerne ich PHP4" von Markt+Technik gemacht.

Eine der gestellten Übungen ist folgende:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Listing5.3: Die If-elseif-else-Anweisung</title>
</head>
<body>
<?php
$stimmung = "traurig";
IF($stimmung =="froh") {
print "Super, ich bin gut drauf!";
} elseif ($stimmung == "traurig") {
print "Ach, mach dir nichts draus.";
} else {
print "Ich bin weder froh noch traurig sondern $stimmung.";
}

?>
</body>
</html>


Was mich irritiert ist die "print" Anweisung nach der "else" Klausel. Wenn "elseif" happy enthält (als Beispiel), wird der "else" Wert als folgender Satz ausgegeben:
Ich bin weder froh noch traurig sondern traurig.

Ich verstehe diese Aussage nicht, mache ich irgendwo einen Denkfehler oder ist das Beispiel ungünstig?

HighFive
HighFive
 
Posts: 8
Joined: 29. May 2005 04:16

Re: Übungsbeispiele

Postby Knight1 » 02. May 2006 06:28

HighFive wrote:Hi
Ich versuche mich etwas in PHP4 einzuarbeiten, bin absoluter Anfänger und habe mich ans Studium des Buches "Jetzt lerne ich PHP4" von Markt+Technik gemacht.

Eine der gestellten Übungen ist folgende:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Listing5.3: Die If-elseif-else-Anweisung</title>
</head>
<body>
<?php
$stimmung = "traurig";
IF($stimmung =="froh") {
print "Super, ich bin gut drauf!";
} elseif ($stimmung == "traurig") {
print "Ach, mach dir nichts draus.";
} else {
print "Ich bin weder froh noch traurig sondern $stimmung.";
}

?>
</body>
</html>


Was mich irritiert ist die "print" Anweisung nach der "else" Klausel. Wenn "elseif" happy enthält (als Beispiel), wird der "else" Wert als folgender Satz ausgegeben:
Ich bin weder froh noch traurig sondern traurig.

Ich verstehe diese Aussage nicht, mache ich irgendwo einen Denkfehler oder ist das Beispiel ungünstig?

HighFive


Ich kenne Deinen Gedankengang jetzt nicht genau, aber ich veruche das ganze mal zu erklären:

Das Statement IF($stimmung =="froh") überprüft ob die Variable $stimmung den Wert froh enthält. Ist dies der Fall wird der PHP-Code { print "Super, ich bin gut drauf!"; } ausgeführt. Ist dies aber nicht der Fall wird zum elseif-Statement gegangen und die Variable $stimmung auf den Wert traurig geprüft. Ist dies der Fall wird der PHP-Code { print "Ach, mach dir nichts draus."; } ausgeführt.
Trifft aber keiner der beiden Fälle zu wird zum else-Statement gegangen und der PHP-Code { print "Ich bin weder froh noch traurig sondern $stimmung."; } ausgeführt.
Die geschweiften Klammer schliesen den PHP-Code ein der ausgeführt werden soll wenn ein Statement zutrifft, gehören also zum Statement. Innerhalb der Klammern kann jeder belibige PHP-Code stehen.

Ich hoffe dass meine Erklärung hilfreich ist.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby HighFive » 02. May 2006 09:13

Danke Night1

Trifft keiner der Fälle zu, liest sich die Ausgabe
Ich bin weder froh noch traurig sondern traurig.
Der Satz macht für mich keinen Sinn, vielleicht ist wirklich das Beispiel etwas unglücklich gewählt.
HighFive
 
Posts: 8
Joined: 29. May 2005 04:16

Postby Knight1 » 02. May 2006 09:26

HighFive wrote:Danke Night1

Trifft keiner der Fälle zu, liest sich die Ausgabe
Ich bin weder froh noch traurig sondern traurig.
Der Satz macht für mich keinen Sinn, vielleicht ist wirklich das Beispiel etwas unglücklich gewählt.


Du überprüfst zwei Fälle: Hat die Variable den Wert traurig oder froh? Hat die Variable aber irgendeinen anderen Wert, z.B. sauer, wird der else-Zweig ausgeführt.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby gfaust » 02. May 2006 15:11

Hallo,

es scheint so, als dass bei Dir in der Prüfung: $stimmung = 'traurig' an Stelle von $stimmung == 'traurig' steht.

Guido
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31

Postby Knight1 » 02. May 2006 16:33

gfaust wrote:Hallo,

es scheint so, als dass bei Dir in der Prüfung: $stimmung = 'traurig' an Stelle von $stimmung == 'traurig' steht.

Guido


Du meinst sicherlich das hier: $stimmung = "traurig";
Das ist die Deklaration der Variable und steht noch vor dem ersten if-Statement.

Das Script ist schon in Ordnung.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby gfaust » 02. May 2006 16:58

Hallo Knight1,

das meinte ich zwar nicht so, aber ich hatte ganz übersehen, dass die Variable vorher mit 'traurig' initialisiert wird und nirgendwo den von ihm genannten Wert 'happy' zugewiesen bekommt.
Ich bin von einer Änderung der Variablen $stimmung ausgegangen.

Guido
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31

Postby HighFive » 03. May 2006 00:40

Ich glaube soweit habe ich das Script verstanden.
Wenn ich nun einfach der "elseif"Variablen einen neuen Wert zuweise, z.B.

<?php
$stimmung = "traurig";
IF($stimmung =="froh") {
print "Super, ich bin gut drauf!";
} elseif ($stimmung == "happy") {
print "Ach, mach dir nichts draus.";
} else {
print "Ich bin weder froh noch traurig sondern $stimmung.";
}
?>

In diesem Fall kommt die "else" Klausel zum Zug, und die liest sich
Ich bin weder froh noch traurig sondern traurig.

HighFive
HighFive
 
Posts: 8
Joined: 29. May 2005 04:16

Postby Knight1 » 03. May 2006 05:38

HighFive wrote:Ich glaube soweit habe ich das Script verstanden.
Wenn ich nun einfach der "elseif"Variablen einen neuen Wert zuweise, z.B.

<?php
$stimmung = "traurig";
IF($stimmung =="froh") {
print "Super, ich bin gut drauf!";
} elseif ($stimmung == "happy") {
print "Ach, mach dir nichts draus.";
} else {
print "Ich bin weder froh noch traurig sondern $stimmung.";
}
?>

In diesem Fall kommt die "else" Klausel zum Zug, und die liest sich
Ich bin weder froh noch traurig sondern traurig.

HighFive


Richtig
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby Wiedmann » 03. May 2006 10:50

Wenn ich nun einfach der "elseif"Variablen einen neuen Wert zuweise, z.B.
Code: Select all
...
elseif ($stimmung == "happy") {
...

In diesem Fall kommt die "else" Klausel zum Zug, und die liest sich:
Ich bin weder froh noch traurig sondern traurig.


Tatsächlich ändert sich bei if-then-else ja (normal) nicht eine einzelne Condition, sondern immer nur der Ausgangswert, gegen den in allen Zweigen geprüft wird. (jedenfalls in so einfachen Fällen wie hier)

Dieses Script geht also davon aus, dass die Variable $stimmung verschiedene Werte beim Start des Scriptes hat.:
Code: Select all
$stimmung = "traurig";
oder
$stimmung = "froh";
oder
$stimmung = "happy";
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby HighFive » 03. May 2006 11:53

Cooles Forum, danke für die Hilfe.

HighFive
HighFive
 
Posts: 8
Joined: 29. May 2005 04:16


Return to PHP

Who is online

Users browsing this forum: No registered users and 22 guests