Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich verzweifle gerade hier an einer Switch Abfrage..

Aufs wesentliche reduziert ist der Code foglender:

       switch('category')
{
case 0: echo 'Matched 0'; break;
case 'category': echo 'Matched category'; break;
}[/PHP]

Warum zum teufel spuckt mir mein PHP hier 'Matched 0' aus und nicht 'Matched category' ?

Das ganze ist auf einem WinXP Entwicklungsrechner mit folgender Konfiguration:

ApacheFriends XAMPP (basic package) version 1.4.9 (win32)

+ Apache 2.0.52

+ MySQL 4.0.21

+ PHP 5.0.2 + PHP 4.3.9 + PEAR

+ PHP-Switch win32 1.0 (von Apachefriends, man nehme die "php-switch.bat")

+ MiniPerl 5.8.3

+ SQLite 2.8.15

+ PHPMyAdmin 2.6.0 pl1

+ ADODB 4.52

+ Mercury Mail Transport System for Win32 and NetWare Systems v4.01a

+ FileZilla FTP Server 0.9.2

+ Webalizer 2.01-10

+ Zend Optimizer 2.5.3

Ich arbeite auf PHP4.3.9!

Gruß,

Markus

Geschrieben

Aufs wesentliche reduziert ist der Code foglender:

       switch('category')
{
case 0: echo 'Matched 0'; break;
case 'category': echo 'Matched category'; break;
}[/PHP]

Warum zum teufel spuckt mir mein PHP hier 'Matched 0' aus und nicht 'Matched category' ?

[/Quote]

Switch bei php (wie auch alle "Switch"-Umsetzungen in allen anderen Programmiersprachen) funktioniert nur mit Zahlenwerten. 'category' wird in einen Zahlenwert umgewandelt und der ist bei php 0 (für Strings).

Ergo: Das Ergebnis ist schon korrekt, wenn auch nicht das was du willst ;)

Geschrieben
Switch bei php (wie auch alle "Switch"-Umsetzungen in allen anderen Programmiersprachen) funktioniert nur mit Zahlenwerten. 'category' wird in einen Zahlenwert umgewandelt und der ist bei php 0 (für Strings).

Das halte ich für ein Gerücht:

http://php.net/switch

Geschrieben
Das halte ich für ein Gerücht:

Im obersten User-Kommentar steht dazu:

It's has already been mentioned indirectly in a few posts, but it is important to realize that switch statements evaluate each case with the "==" operator by default. This can lead to unexpected results when comparing strings to integers, because PHP will convert the string to an integer. In many cases this means a string can be equivalent to the integer 0.

Insgesamt: Ok, mag sein, dass php das auch mit Strings kann. Dann sollten es aber wohl ausschliesslich Strings sein.

EDIT:

eine Umkeherung deiner Case-Anweisungen sollte wohl helfen. Allerdings wird es dann umgekehrt ( switch(0) ) wieder zu Problemen kommen...

Geschrieben

hm...

switch('category')
{
case '0': echo 'Matched 0'; break;
case 'category': echo 'Matched category'; break;
} [/PHP]

so gehts :)

Danke dir!

Geschrieben

       switch('category')
{
case 0: echo 'Matched 0'; break;
case 'category': echo 'Matched category'; break;
}[/PHP]

Stell' das case 0 ans Ende. Php findet, dass Strings gleich 0 sind. Folgender Block evaluiert zum Beispiel auch zu foo und nicht zu bar.

[PHP]
if ('cat' == 0)
echo "foo";
else
echo "bar";

Somit evaluiert der erste Vergleich ('catergory' == 0) zu true, womit der entsprechende Anweisungsblock ausgeführt wird.

Btw: Wieso willst du eigentlich Zahlen und Strings vergleichen? *g*

Geschrieben

Hi,

Problem ist ja schon gelöst, siehe oben..

Btw: Wieso willst du eigentlich Zahlen und Strings vergleichen? *g*

Ich habe in dem Beispiel das ganze aufs wesentliche reduziert... in den Switch können auch "normale" zahlen oben reinkommen...

Gruß,

Markus

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...