SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.11.2009, 14:15:08
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
switch geht in den falschen case wenn die variable (int) 0 ist

Hallo SELFPHP-Gemeinde, ich habe folgendes Verständnisproblem :
PHP-Code:
$conditions = array(1,2,3,4);

                foreach (
$conditions as $key => $value) {
                    switch (
$key) {
                        case 
'AND':
                            echo 
'AND: '.$key.'<br />';
                            break;
                        case 
'OR':
                            echo 
'OR: '.$key.'<br />';
                            break;
                        default:
                            echo 
'DEF: '.$key.'<br />';                                                       
                    }
                }
/* AUSABE:
AND: 0
DEF: 1
DEF: 2
DEF: 3
*/ 
0 = 'AND' ? Wie kommt PHP denn darauf? Wird da was falsch gecastet? Habe die 0 noch andere bedeutungen als FALSE? Oder ist das ein Logik Problem ? if(FALSE) quasi?

Lösung:
PHP-Code:
                foreach ($conditions as $key => $value) {
                    switch ((string) 
$key) {
                        case 
'AND':
                            echo 
'AND: '.$key.'<br />';
                            break;
                        case 
'OR':
                            echo 
'OR: '.$key.'<br />';
                            break;
                        default:
                            echo 
'DEF: '.$key.'<br />';                                                       
                    }
                }
/* AUSGABE:
DEF: 0
DEF: 1
DEF: 2
DEF: 3
*/ 
Danke für Zeit und Erklärung, ich habe im Handbuch leider keine Hinweise für dieses Verhalten finden können.

Geändert von Indyk (17.11.2009 um 14:20:30 Uhr) Grund: rechtschreibfehler
Mit Zitat antworten
  #2  
Alt 17.11.2009, 14:33:28
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: switch geht in den falschen case wenn die variable (int) 0 ist

you made my day!

PHP-Code:
<?php
var_dump
(== 'A');
?>
Ausgabe:

bool(true)

hahahahaha
Mit Zitat antworten
  #3  
Alt 17.11.2009, 15:05:50
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: switch geht in den falschen case wenn die variable (int) 0 ist

Zitat:
ich habe im Handbuch leider keine Hinweise für dieses Verhalten finden können.
Das ist aber sehr seltsam!
Bei Switch findest du, dass es ein untypisierter Vergleich ist. Und bei den Vergleichsoperatoren findet sich eine Wahrheitstabelle.

Du suchst:
PHP-Code:
switch (true) {
                        case 
$key === 'AND':
                            echo 
'AND: '.$key.'<br />';
                            break;
                        case 
$key === 'OR':
                            echo 
'OR: '.$key.'<br />';
                            break;
                        default:
                            echo 
'DEF: '.$key.'<br />'
Mit Zitat antworten
  #4  
Alt 17.11.2009, 15:08:57
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: switch geht in den falschen case wenn die variable (int) 0 ist

ich darf zitieren:

Zitat:
das ist die antwort: var_dump(0 == intval('A'));
und dazu noch:

Zitat:
mit python wäre das nicht passiert… ;)
Mit Zitat antworten
  #5  
Alt 17.11.2009, 15:10:27
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: switch geht in den falschen case wenn die variable (int) 0 ist

@doku

danke
Mit Zitat antworten
  #6  
Alt 17.11.2009, 15:16:44
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: switch geht in den falschen case wenn die variable (int) 0 ist

Gerne.

Zitat:
und dazu noch:

Zitat:mit python wäre das nicht passiert… ;)
Könne das evtl eine andere Sprache sein?

In FORTH wäre einem DAS auch nicht passiert.
Mit Zitat antworten
  #7  
Alt 17.11.2009, 16:11:03
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: switch geht in den falschen case wenn die variable (int) 0 ist

Zitat:
Zitat von feuervogel Beitrag anzeigen
mit python wäre das nicht passiert
ach mann... was soll das denn?

cx
Mit Zitat antworten
Antwort

Stichworte
case, foreach, key, logische verknüpfungen, switch, value


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
switch case Anweisung powl PHP Grundlagen 6 19.08.2009 12:47:28
switch & case & break FireDervil PHP Grundlagen 8 13.05.2005 15:32:48
Andere Lösung für switch mit Case Hilfe gesucht plautzer PHP Grundlagen 1 05.01.2005 08:24:02
Switch: case mit mehreren Werten edv-rs PHP Grundlagen 2 30.08.2004 13:24:50
Weiterleitung in if-Schleife Chilla PHP für Fortgeschrittene und Experten 15 05.05.2004 19:19:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:51:58 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt