In PHP sind IS_INT und IS_DOUBLE zwei häufig verwendete Typ -Check -Funktionen. IS_INT wird verwendet, um festzustellen, ob ein Wert eine Ganzzahl ist, während IS_DOUBLE verwendet wird, um festzustellen, ob ein Wert eine schwimmende Punktzahl ist. Obwohl die Funktionen dieser beiden Funktionen sehr intuitiv sind, können Sie, ob eine Variable eine schwimmende Punktzahl oder eine Ganzzahl ist, effizienter feststellen, dass eine Variable einfach is_int und is_double separat aufrufen können, insbesondere bei Anwendungen mit Hochleistungsanforderungen.
In PHP sind is_int () und is_double () integrierte Funktionen, mit denen Variablentypen überprüft werden. Die Funktion is_int () wird verwendet, um festzustellen, ob eine Variable eine Ganzzahl ist, zurückgibt, um anzuzeigen, dass die Variable eine Ganzzahl ist, und Falsch zurücksenden, um anzuzeigen, dass sie keine Ganzzahl ist. is_double () (kann auch verwendet werden, um zu prüfen, ob die Variable eine schwimmende Punktzahl ist, zurücktreue, um eine schwimmende Punktzahl darzustellen, und Falsch, um eine Nicht-Float-Nummer darzustellen.
Diese beiden Funktionen werden normalerweise verwendet, um einen einzelnen Typ zu beurteilen, aber wir können sie auch zusammen verwenden, um zu unterscheiden, ob eine Variable eine schwimmende Punktzahl oder eine Ganzzahl ist. Das Problem ist, dass PHP numerische Typen automatisch in entsprechende Typen gemäß verschiedenen Situationen umwandelt, insbesondere für numerische Zeichenfolgen und andere Wertearten, die möglicherweise eine detailliertere Unterscheidung erfordern.
Wenn wir is_int () oder is_double () allein verwenden, um die variablen Typen separat zu überprüfen, können wir auf die folgenden Probleme stoßen:
Typumwandlung : PHP verfügt über eine automatische Konvertierung von Typ, was bedeutet, dass einige schwimmende Punktzahlen (z. B. 1.0), die wie Ganzzahlen aussehen, als Ganzzahlen beurteilt werden.
Leistungsaufwand : Jedes Mal, wenn die Funktionen is_int () und is_double () aufgerufen werden, überprüft PHP den Typ der Variablen. Wenn es sich um eine komplexe Codelogik handelt, kann dies zu einem gewissen Leistungsaufwand führen.
Unfähigkeit, genau zu unterscheiden : PHPs is_int () und is_double () können möglicherweise nicht in der Lage sein, zwischen Stringnummern, Booleschen und anderen Typen genau zu unterscheiden.
Um die Gleitkomma-Zahlen von Ganzzahlen effizienter zu unterscheiden, können wir die Typ-Checkfunktion von PHP und einige andere Methoden kombinieren, um genauere Urteile zu erhalten.
Verwenden Sie zunächst is_int () , um festzustellen, ob eine Variable eine Ganzzahl ist. Wenn es sich um eine Ganzzahl handelt, müssen wir nicht weiter nachsehen.
<span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-number">5</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is an integer."</span></span><span>;
}
</span></span>
Für das Urteil über Gleitkomma-Zahlen muss IS_DOUBLE () in Kombination mit zusätzlichen Überprüfungsbedingungen verwendet werden, um Is_int () von Fehleinschätzungen 1.0 als Ganzzahl zu vermeiden. Wir können eine genaue Identifizierung von Floating-Punkt-Nummern sicherstellen, indem wir is_int () ausschließen .
<span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-number">5.5</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_double</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>) && !</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a float."</span></span><span>;
}
</span></span>
Wenn wir sicherstellen möchten, dass wir nicht nur numerische Variablen sind, können wir auch is_numeric () verwenden, um festzustellen, ob eine Zeichenfolge in eine Zahl konvertiert werden kann. Dann wird das endgültige Urteil über is_int () und is_double () getätigt.
<span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-string">"10.5"</span></span><span>; </span><span><span class="hljs-comment">// Zeichenfolge Nummer</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_numeric</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-string">'.'</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a float."</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is an integer."</span></span><span>;
}
}
</span></span>
Durch Kombination von Funktionen wie is_int () , is_double () und is_numeric () können wir die Art der Variablen effizient und genau beurteilen und die Fehleinschätzung und die Leistungsprobleme vermeiden, die durch die einfache Verwendung dieser beiden Funktionen verursacht werden können. Für komplexere Szenarien ist es am besten, is_numeric () für das vorläufige Screening zuerst zu verwenden und dann die Urteilslogik auf der Grundlage der tatsächlichen Bedürfnisse weiter zu verfeinern.
Durch diese Optimierungsmethode können wir schwimmende Punktzahlen und Ganzzahlen genauer unterscheiden und gleichzeitig die Lesbarkeit und Ausführungseffizienz des Codes verbessern.