Tom: 001 = 1 und password_hash

Beitrag lesen

Hello,

ich wollte dir erst zustimmen und mich bedanken, dass du das richtig gestellt hast, aber dann habe ich nochmal folgendes ausgeführt:

var_dump("01"=="1");   //true
var_dump("01"==1);   //true
var_dump(01=="1");   //true     Hier ersetzt erst der Pre-Parser die 01 gegen die Oktalzahl
var_dump("015"=="13");  //false
var_dump(015=="13");   //true     Hier ersetzt erst der Pre-Parser die 015 durch die Oktalzahl
var_dump("015"==13);   //false

  
Wenn Du die Zahlen aber als Strings notiert, werden sie erst durch den Vergleichsoperator als Zahl interpretiert. Wenn Du den richtigen[tm] Vergleichsoperator '===' benutzt, dann findet keine Interpretation statt und die beiden Operanden werden unter Beibehaltung der notierten Typen verglichen.  
  
Eine Zahl ist beim Typvergleich dann selbstverständlich ungeleich einem String!  
  
Das was PHP hier macht, ist absolut logisch nachvollziehbar. Es richtet sich nach den für die Sprache festgelegten Regeln. Es ist daher nicht falsch, Vergleich im Zweifelsfall immer mit dem Identitätsoperator, also unter Beibehaltung der Typen der Operanden, durchzuführen.  
  
  
  
  
Liebe Grüße aus dem schönen Oberharz  
  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
 ☻\_  
/▌  
/ \ Nur selber lernen macht schlau  
<http://bikers-lodge.com>