Es kann nicht festgestellt werden, ob eine Zeichenfolge derzeit eine Ganzzahl ist oder nicht

StackOverflow https://stackoverflow.com/questions/9505466

  •  14-11-2019
  •  | 
  •  

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.

War es hilfreich?

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.

Documentation: Comparison Operators

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top