Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Phänomen! Case Abfrage...

Mitglied: ccamel

ccamel (Level 1) - Jetzt verbinden

06.04.2010, aktualisiert 11.04.2010, 3383 Aufrufe, 3 Kommentare

Tag zusammen! Zu meinem Problem...

Folgender Code:

01.
 
02.
	<?php
03.
	for ($punkte = 10; $punkte >= - 10; $punkte--)
04.
		{
05.
		echo "<br>$punkte Punkte ergeben folgende Bewertung: ";
06.
		switch ($punkte)
07.
			{
08.
			case 10:
09.
				echo "Sehr gut";
10.
				break;
11.
			case 9:
12.
				echo "Gut";
13.
				break;
14.
			case 8:
15.
				echo "Befriedigend";
16.
				break;
17.
			case 7:
18.
				echo "Ausreichend";
19.
				break;
20.
			case ($punkte <= 6): 
21.
				echo "Nicht ausreichend!";
22.
				break;
23.
			}
24.
		}
25.
	?>
Folgendes kommt dabei raus:

10 Punkte ergeben folgende Bewertung: Sehr gut
9 Punkte ergeben folgende Bewertung: Gut
8 Punkte ergeben folgende Bewertung: Befriedigend
7 Punkte ergeben folgende Bewertung: Ausreichend
6 Punkte ergeben folgende Bewertung: Nicht ausreichend!
5 Punkte ergeben folgende Bewertung: Nicht ausreichend!
4 Punkte ergeben folgende Bewertung: Nicht ausreichend!
3 Punkte ergeben folgende Bewertung: Nicht ausreichend!
2 Punkte ergeben folgende Bewertung: Nicht ausreichend!
1 Punkte ergeben folgende Bewertung: Nicht ausreichend!
0 Punkte ergeben folgende Bewertung:
-1 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-2 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-3 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-4 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-5 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-6 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-7 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-8 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-9 Punkte ergeben folgende Bewertung: Nicht ausreichend!
-10 Punkte ergeben folgende Bewertung: Nicht ausreichend!

Wenn man sich dabei die Ausgabe bei "0" anschaut, ist doch die Ausgabe völliger Quatsch! Woher kommt das?

Gruss
Ccamel
Mitglied: Dani
06.04.2010 um 16:02 Uhr
Hi Ccamel,
mach aus der Zeile
01.
case ($punkte <= 6):
einfach
01.
default:
und es funktioniert. So wie ich das sehe hängt es mit deiner logischen Abfrage zusammen. Denn wenn du einen "case 0:" definierst, gibt er auch den entsprechenden Text aus. Woher das aber genau kommt, weiß ich nicht.


Grüße,
Dani
Bitte warten ..
Mitglied: dog
06.04.2010 um 16:06 Uhr
Dein Problem liegt darin, dass du etwas mit switch machst, was PHP nur erlaubt weil es so eine saloppe Syntax hat.

Du musst dir vor Augen führen was bei einem Switch im Code wirklich passiert.
Bei deinem Beispiel:
01.
	if ($punkte == 10) {
02.
		echo "Sehr gut";
03.
	} elseif ($punkte == 9) {
04.
		echo "Gut";
05.
	} elseif ($punkte == 8) {
06.
		echo "Befriedigend";
07.
	} elseif ($punkte == 7) {
08.
		echo "Ausreichend";
09.
	} elseif ($punkte == ($punkte <= 6)) {
10.
		echo "Nicht ausreichend!";
11.
	}
Die Krux liegt hier in deinem letzten Statement, dass so für case eigentlich nicht erlaubt ist.
Bei PHP ist aber auch jeder Wert != 0 per Definition bei ==-Vergleichen true.

Sprich für 5 Punkte passiert da:
01.
(5 == ( 5 <= 6))
02.
(5 == true)
03.
(true == true)
04.
true
Für 0 passiert dort aber:
01.
(0 == (0 <= 6))
02.
(0 == true)
03.
(false == true)
04.
false
Darum würde dein vermurkstes switch bei 0 so nie greifen.
Bitte warten ..
Mitglied: ccamel
06.04.2010 um 16:45 Uhr
Zitat von dog:
Dein Problem liegt darin, dass du etwas mit switch machst, was PHP nur erlaubt weil es so eine saloppe Syntax hat.

Du musst dir vor Augen führen was bei einem Switch im Code wirklich passiert.
Bei deinem Beispiel:
01.
> 	if ($punkte == 10) {
02.
> 		echo "Sehr gut";
03.
> 	} elseif ($punkte == 9) {
04.
> 		echo "Gut";
05.
> 	} elseif ($punkte == 8) {
06.
> 		echo "Befriedigend";
07.
> 	} elseif ($punkte == 7) {
08.
> 		echo "Ausreichend";
09.
> 	} elseif ($punkte == ($punkte <= 6)) {
10.
> 		echo "Nicht ausreichend!";
11.
> 	}
12.
> 
Die Krux liegt hier in deinem letzten Statement, dass so für case eigentlich nicht erlaubt ist.
Bei PHP ist aber auch jeder Wert != 0 per Definition bei ==-Vergleichen true.

Sprich für 5 Punkte passiert da:
01.
> (5 == ( 5 <= 6))
02.
> (5 == true)
03.
> (true == true)
04.
> true
05.
> 
Für 0 passiert dort aber:
01.
> (0 == (0 <= 6))
02.
> (0 == true)
03.
> (false == true)
04.
> false
05.
> 
Darum würde dein vermurkstes switch bei 0 so nie greifen.


Vielen Dank für deine Ausführliche Erklärung. Leuchtet mir jetzt ein...
Bitte warten ..
Ähnliche Inhalte
Exchange Server
Umbenennen des CAS Array
Frage von 125063Exchange Server4 Kommentare

Hallo, wir haben 2 Exchange Server mit Failovercluster. Ich habe ein CAS Array erstellt, allerdings möchte ich jetzt den ...

Monitoring

Dynatrace Enterprise Synthetic Monitoring, CAS, . - ALTERNATIVE GESUCHT!

gelöst Frage von RinelliMonitoring2 Kommentare

Hallo zusammen, ich bin für die Systemüberwachung mit 24/7 Prio Ticketing bei einem Fernsehsender zuständig. Ist-Stand: Was ich seit ...

Exchange Server

Exchange 2013: max. gleichzeitige Verbindungen EWS für einen CAS

Frage von DaPeddaExchange Server6 Kommentare

Servus, wir nutzen seit neusten für die Email Langzeitarchivierung das Produkt Retain von Gwava. Wir haben uns aufgrund einer ...

Exchange Server

CAS HUB Server Event 17 als Error jede Sekunde im Eventviewer

Frage von BradockExchange Server

Hallo zusammen, ich bekomme plötzlich auf 2 von meinen 4 CAS/HUB Servern diesen Eintrag im Event Viewer und zwar ...

Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 3 TagenWindows 71 Kommentar

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 5 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 6 TagenMicrosoft Office8 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 8 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Windows Installation
Windows10 Home Neuinstallation - Raketentechnik
Frage von spacyfreakWindows Installation15 Kommentare

"Kannst du den Rechner von der Tante von WindowsXP auf Windows10 Home upgraden" haben sie gefragt? "Sicher, was kann ...

Utilities
Teamviewer 9.x "out of date" ??
gelöst Frage von keine-ahnungUtilities13 Kommentare

Moin at all, mein topaktueller teamviewer (alles 9.x - releases) verweigert seit heute die Arbeit und bemeckert: "the remote ...

Windows 10
Windows 10 verwendet FritzBox per IPv6 als DNS-Server an Stelle des per DHCP vergebenen DNS-Servers
Frage von Datax87Windows 1010 Kommentare

Hallo, ich habe ein kleines Problem mit der Namensauflösung (DNS) unter Windows 10. Mir ist heute aufgefallen, dass ich ...

Peripheriegeräte
PS2 Y-Kabel für Maus+Tastatur an PS2 Combo-Anschluss ASUS Prime X370-A
gelöst Frage von Windows10GegnerPeripheriegeräte10 Kommentare

Hallo, ich bin am Überlegen das o.g. Motherboard anzuschaffen. Da ich aber noch PS/2 für Maus+Tastatur benötige (bei optischen ...