Während des Entwicklungsprozesses mit PHP begegnen Entwickler häufig auf einige Warnungen und Fehlermeldungen. Unter ihnen ist eine häufige Warnung "Bekanntmachung: Ein nicht gut gebildeter numerischer Wert". Diese Warnung tritt normalerweise auf, wenn versucht wird, eine Zeichenfolge in einen numerischen Wert umzuwandeln, insbesondere wenn das numerische Format nicht mit den Erwartungen übereinstimmt. Dieser Artikel wird die Ursache dieses Problems analysieren und Lösungen bereitstellen, mit denen Sie ähnliche Fehler vermeiden können.
Diese Warnung erfolgt normalerweise in den folgenden Situationen:
Fehlerbeispiel:
$ num1 = "10"; $ num2 = "5"; // Fehlerbeispiel $ result = $ num1 + $ num2;
Da PHP eine schwache Sprache ist, versucht es, Zeichenfolgen automatisch in numerische Werte umzuwandeln. Wenn die Zeichenfolge jedoch nicht korrekt in einen numerischen Wert umgewandelt werden kann, wird eine Warnung angezeigt. Um dieses Problem zu lösen, können wir die Funktion intval () verwenden, um die Zeichenfolge explizit in eine Ganzzahl umzuwandeln.
Richtiges Beispiel:
$ result = intval ($ num1) + intval ($ num2);
Fehlerbeispiel:
$ datestring = "2021-01-15"; // Fehlerbeispiel $ timestamp = strtotime ($ datestring);
Obwohl die Datumszeichenfolge aufgrund des Fehlens spezifischer Zeitinformationen korrekt formatiert ist, versucht PHP, sie in einen Zeitstempel der aktuellen Zeit zu konvertieren, was zu falschen Ergebnissen führt. Die Lösung besteht darin, den Zeitteil nach der Datumszeichenfolge hinzuzufügen, z. B. "00:00:00".
Richtiges Beispiel:
$ timestamp = strtotime ("$ datestring 00:00:00");
Fehlerbeispiel:
$ numbersting = "123abc"; // Fehler beispielsweise $ number = intval ($ numberString);
Wenn die Zeichenfolge nicht numerische Zeichen enthält, kann PHP sie nicht in eine Zahl konvertieren, was zu einer Warnung führt. Um dies zu vermeiden, können Sie mit der Funktion preg_replace () nicht numerische Zeichen herausfiltern.
Richtiges Beispiel:
$ number = preg_replace ("/[^0-9]/", "", $ numberstring);
Der Grund für den "Hinweis: Ein nicht gut gebildeter numerischer Wert, der in PHP aufgetaucht ist", liegt normalerweise auf Versuchen, eine Zeichenfolge mit einem unregelmäßigen Format in einen numerischen Typ umzuwandeln. Diese Probleme können durch explizite Konvertierungen unter Verwendung geeigneter Funktionen wie intval () oder preg_replace () vermieden werden. Wenn Sie den Zeitstempelumwandlungsumbau bearbeiten, kann sichergestellt werden, dass die Datumszeichenfolge abgeschlossen ist und den Zeitteil enthält, kann auch die Warnung effektiv beheben.