Es kann nicht festgestellt werden, ob eine Zeichenfolge derzeit eine Ganzzahl ist oder nicht
Frage
Der folgende Funciton fuhr mich Muttern.Wie auf der Erde 100x gleich 100 sein könnte, und dann wird 100x als Ganzzahl gemeldet?
Für das Leben von mir kann ich es nicht herausfinden.
Sie können das Ganze kopieren und einfügen und es für sich selbst sehen.
Ich vermisse einen einfachen Punkt irgendwo hier, helfe mir, hilf mir Jungs.
generasacodicetagpre.
Der obige Code, wenn der Run die folgenden Renditen zurückgibt; generasacodicetagpre.
Ich kann die Situation beheben, indem er die folgenden Bits hinzufügt generasacodicetagpre.
an der Spitze der BLP_INT-Funktion sofort von der Fledermaus, aber .. Ich bin immer noch super neugierig herausfinden, warum auf der Erde PHP denkt, dass 100x= 100 gleich ist.
Lösung
As you can see in this example, casting 100x
as an integer converts it to 100
. Since you are not using strict comparison, '100x' == 100
is true. PHP removes the x
from it to make just 100
.
You could use strict comparison (which also compares the types), such that '100x' === 100
would return false. Using it, any time a string was compared to an integer, it would return false.
As per your edit: is_numeric
may not be the most reliable, as it will return true for numbers formatted as a string, such as '100'
. If you want the number to be an integer (and never a string), you could use is_integer
instead. I'm not quite sure what exactly you're doing, but i thought I'd add this note.
Andere Tipps
I think you should use three equal signs in your IF:
if ($orgval===$num) {
Otherwise PHP casts the value 100x
to 100
and 100=100
.
What kind of check do you want to do? There are a few ways you could go about it:
if (preg_match('!^[0-9]+$!', $input))
if (intval($input) == $input)
if (intval($input) === $input)
if ('x'.intval($input) === 'x'.$input)
It depends on how closely you want to check if it's an integer. Does it matter if you need to trim()
it first?
Either cast it to an int
or try http://php.net/manual/en/function.ctype-digit.php. You also need ===
in your if.