Vergleichprobleme
Twilo
- php
0 edx0 Twilo
0 Mathias Brodala0 Mathias Brodala0 Twilo0 Mathias Brodala0 Twilo
Hallo,
hab ich einen leichten Blackout?!
<?php
$zahl = '25c';
var_dump($zahl == (int)$zahl);
?>
warum kommt da true raus?
'25c' == 25 sollte doch nicht true ergeben, oder?
mfg
Twilo
warum kommt da true raus?
'25c' == 25 sollte doch nicht true ergeben, oder?
weil du ein carsting machst. nach (int)$zahl wird aus 25c eine 25
mfg
edx
mfg
Twilo
Hallo,
warum kommt da true raus?
'25c' == 25 sollte doch nicht true ergeben, oder?
weil du ein carsting machst. nach (int)$zahl wird aus 25c eine 25
ich versteh nicht so ganz, was du mir damit sagen möchtest ;-)
ich caste doch nur ein Teil und nicht beide
<?php
$zahl = '25c';
$zahl1 = $zahl;
$zahl2 = (int)$zahl;
var_dump($zahl1 == $zahl2);
?>
ergibt auch true, ich versteh es nicht ;-)
mfg
Twilo
Hallo Twilo.
hab ich einen leichten Blackout?!
<?php
$zahl = '25c';
var_dump($zahl == (int)$zahl);
?>
> warum kommt da true raus?
> '25c' == 25 sollte doch nicht true ergeben, oder?
Offensichtlich konvertiert PHP hier „25c“ intern automatisch [in einen Integer-Wert](http://www.php.net/manual/de/language.types.string.php#language.types.string.conversion), wonach lediglich „25“ verbleibt; der Vergleich ist also wahr. Als sonderlich sinnvoll sehe ich dies hier nicht an; greife also auf den strikten Gleichheitsoperator (===) zurück.
Einen schönen Freitag noch.
Gruß, Mathias
--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules
Hallo nochmal.
hab ich einen leichten Blackout?!
<?php
$zahl = '25c';
var_dump($zahl == (int)$zahl);
?>
> > warum kommt da true raus?
> > '25c' == 25 sollte doch nicht true ergeben, oder?
>
> Offensichtlich konvertiert PHP hier „25c“ intern automatisch [in einen Integer-Wert](http://www.php.net/manual/de/language.types.string.php#language.types.string.conversion), wonach lediglich „25“ verbleibt; […]
Dies bezieht sich natürlich auf die linke Seite des Vergleiches, ohne expliziten Cast.
Einen schönen Freitag noch.
Gruß, Mathias
--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules
Hallo,
Offensichtlich konvertiert PHP hier „25c“ intern automatisch in einen Integer-Wert, wonach lediglich „25“ verbleibt; […]
hm...
wenn ich das richtig verstehe, konvrtiert er nur bei Berechnungen
greife also auf den strikten Gleichheitsoperator (===) zurück
ich wollte so testen, ob es sich um eine Zahl (die Eingabe kommt per Formular) handelt.
Ich wollte nicht gleich auf preg_match zurückgreifen ;-)
mfg
Twilo
Hallo Twilo.
Offensichtlich konvertiert PHP hier „25c“ intern automatisch in einen Integer-Wert, wonach lediglich „25“ verbleibt; […]
hm...
wenn ich das richtig verstehe, konvrtiert er nur bei Berechnungen
… und Vergleichen. Integer hat hier also eine höhere Rangordnung als String. Hier noch ein paar Experimente:
var_dump('42a' == 42); // true
var_dump('aa' == 42); // false
var_dump('a42' == 42); // false
var_dump('4a2' == 42); // false
var_dump('4a2' == 4); // true
greife also auf den strikten Gleichheitsoperator (===) zurück
ich wollte so testen, ob es sich um eine Zahl (die Eingabe kommt per Formular) handelt.
Dann solltest du dir is_numeric anschauen.
Ich wollte nicht gleich auf preg_match zurückgreifen ;-)
Keine Sorge, die Kanone muss nicht gezogen werden.
Einen schönen Freitag noch.
Gruß, Mathias
Hallo,
Dann solltest du dir is_numeric anschauen.
ctype_digit ist da glaube ich besser, da bei is_numeric auch 1.0 gültig ist
mfg
Twilo