Bei der PHP -Programmierung ist es sehr häufig zu bestimmen, ob ein Wert eine Ganzzahl ist, insbesondere wenn es sich um Schleifenstrukturen (z. B. Foreach oder für Schleifen) handelt. is_int () ist eine integrierte Funktion, die feststellt, ob eine Variable ein Wert von Typ Integer ( int ) ist. Obwohl die Funktion selbst einfach ist, wird sie häufig von einigen leicht übersehenen Fallstricken begleitet, wenn sie in Schleifen verwendet wird, insbesondere wenn sie mit Array -Tasten, Formularen oder externen Daten zu tun haben.
In diesem Artikel wird eingehend erklären, wie IS_int () in Schleifen korrekt verwendet werden kann, um Ganzzahlen zu beurteilen, einschließlich häufiger Missverständnisse und praktischen Beispielen.
is_int(mixed $value): bool
Diese Funktion nimmt eine Variable als Parameter ein und gibt true zurück, wenn der Typ der Variablen eine Ganzzahl (int) ist, ansonsten false zurückgibt.
Beispiel:
$value = 10;
if (is_int($value)) {
echo "Es ist eine Ganzzahl";
} else {
echo "不Es ist eine Ganzzahl";
}
Ausgabe:
Es ist eine Ganzzahl
In praktischen Anwendungen verwenden wir häufig, um Arrays zu durchqueren. Zu diesem Zeitpunkt können ganzzahlige Urteile auf den Schlüssel des Arrays getroffen werden. Typische Szenarien sind, gemischte Arrays zu verarbeiten oder Indexarrays von assoziativen Arrays zu unterscheiden.
$data = [
0 => 'Apfel',
1 => 'Banane',
'a' => 'orange',
'2' => 'Birne'
];
foreach ($data as $key => $value) {
if (is_int($key)) {
echo "$key Es ist eine Ganzzahl索引:$value\n";
} else {
echo "$key Ja, Nichteigerindex:$value\n";
}
}
Ausgabe:
0 Es ist eine Ganzzahl索引:Apfel
1 Es ist eine Ganzzahl索引:Banane
a Ja, Nichteigerindex:orange
2 Ja, Nichteigerindex:Birne
Hinweis: Obwohl der Schlüssel '2' wie eine Ganzzahl aussieht, ist er von einem String -Typ und wird nicht als Ganzzahl von is_int () beurteilt. Dies ist der Schlüsselpunkt bei der Verwendung von is_int () .
Wenn Sie beurteilen möchten, dass String-geformte Nummern (z. B. '2' ) auch als Ganzzahlen gezählt werden, sollten Sie CTYPE_DIGIT () oder is_numeric () mit intval () verwenden:
$key = '2';
if (is_numeric($key) && (string)(int)$key === (string)$key) {
echo "$key Kann als Ganzzahl angesehen werden";
}
Wenn Sie jedoch nur feststellen möchten, ob die Variable ein strenger Ganzzahlwert ist, dann ist is_int () die geeignete und sicherste Wahl.
Obwohl sich die für die Schleife selbst häufig auf Ganzzahlindizes beruht, ist es manchmal erforderlich, Urteile über die außerhalb der Gründung des Verhaltens der Schleife bestehenden Daten zu fällen:
$limit = $_GET['limit'] ?? 10;
if (!is_int($limit)) {
$limit = (int)$limit; // Fälle
}
for ($i = 0; $i < $limit; $i++) {
echo "1. $i Zweite Schleife\n";
}
Wenn Sie $ Limit über Formular- oder URL -Parameter übergeben, ist der Standardtyp der Standardtyp. Wenn Sie IS_int () direkt verwenden, müssen Sie vor dem Urteil die Typumwandlung durchführen oder mit filter_var () verwendet werden.
$limit = $_GET['limit'] ?? 10;
if (filter_var($limit, FILTER_VALIDATE_INT) !== false) {
$limit = (int)$limit;
} else {
$limit = 10;
}
Diese Methode ist sicherer und geeigneter zur Überprüfung der Benutzereingabe.
Zum Beispiel besuchen Sie:
https://gitbox.net/index.php?limit=5
Die Schleife wird 5 Mal ausgeführt.
is_int () gibt true nur für Werte vom Typ int und String -Nummern wie '5' zurück, die false zurückgeben.
Seien Sie vorsichtig, wenn Sie beurteilen, ob ein Array -Taste eine Ganzzahl in Foreach ist: Numerische Zeichenfolgen werden nicht als Ganzzahltasten verarbeitet.
Die Benutzereingabe ist normalerweise ein String -Typ, und es wird empfohlen , filter_var () oder manuelle Konvertierung zu verwenden, um sicherzustellen, dass der Typ konsistent ist.
Wenn Sie eine Zeichenfolge beurteilen möchten, die wie eine Ganzzahl aussieht, können Sie auch cType_digit () oder andere Alternativen verwenden.
Die Verwendung von is_int () in einer Schleifenstruktur ist eine gängige Methode für die Sicherheitstypsicherung, aber Sie müssen die Einschränkungen und Nutzungsszenarien verstehen, um ein robustes PHP -Programm zu schreiben.