Avis PHP : une valeur numérique mal formée est rencontrée - Solution

PHPz
Libérer: 2023-08-18 18:54:02
original
2420 Les gens l'ont consulté

PHP Notice: A non well formed numeric value encountered - 解决方法

Avis PHP : Une valeur numérique mal formée est rencontrée - Solution

Lors du processus de développement utilisant PHP, vous rencontrez souvent des messages d'avertissement et d'erreur. L'un des avertissements courants est « Avis : une valeur numérique mal formée a été rencontrée ». Cet avertissement apparaît généralement lorsque vous essayez de convertir une chaîne en valeur numérique. Dans cet article, nous comprendrons pourquoi cet avertissement apparaît et proposerons quelques solutions.

Cet avertissement apparaît généralement dans les situations suivantes :

  1. Utilisation de chaînes comme valeurs numériques lors de l'exécution d'opérations mathématiques.
  2. Lorsque vous essayez de convertir un format d'heure lisible par l'homme en horodatage.
  3. Lorsque vous essayez de convertir une chaîne contenant des caractères non numériques en nombre entier ou flottant.

Voici quelques exemples de code courants et des solutions de contournement :

1. Utilisez des chaînes comme valeurs numériques lors de l'exécution d'opérations mathématiques

$num1 = "10";
$num2 = "5";

// 错误示例
$result = $num1 + $num2;

// 正确示例
$result = intval($num1) + intval($num2);
Copier après la connexion

Dans l'exemple d'erreur, nous utilisons les chaînes $num1 et $num2 comme valeurs numériques ​​sont utilisés pour effectuer des opérations d’addition. Puisque PHP est un langage faiblement typé, il tente de convertir des chaînes en valeurs numériques. Cependant, si la chaîne n'est pas dans un format numérique légal, un avertissement apparaîtra. Pour résoudre ce problème, nous pouvons utiliser la fonction intval() pour convertir la chaîne en entier. intval()函数将字符串转换为整数。

2. 在尝试将人类可读的时间格式转换为时间戳时

$dateString = "2021-01-15";

// 错误示例
$timestamp = strtotime($dateString);

// 正确示例
$timestamp = strtotime("$dateString 00:00:00");
Copier après la connexion

在错误示例中,我们将日期字符串传递给strtotime()函数来将其转换为时间戳。然而,由于日期字符串不包含具体的时间信息,PHP会尝试将其转换为当前时间的时间戳。这样一来,结果就不是一个有效的时间戳,就会出现警告。为了解决这个问题,我们可以在日期字符串后面添加具体的时间信息,使其成为一个完整的日期时间字符串。

3. 在尝试将包含非数字字符的字符串转换为整数或浮点数时

$numberString = "123abc";

// 错误示例
$number = intval($numberString);

// 正确示例
$number = preg_replace("/[^0-9]/", "", $numberString);
Copier après la connexion

在错误示例中,我们尝试将包含非数字字符的字符串转换为整数。由于字符串中包含非数字字符,PHP无法将其解析为数字,就会出现警告。为了解决这个问题,我们可以使用preg_replace()

2. Lorsque nous essayons de convertir un format d'heure lisible par l'homme en un horodatage

rrreee

Dans l'exemple d'erreur, nous transmettons la chaîne de date à la fonction strtotime() pour la convertir en horodatage. . Cependant, comme la chaîne de date ne contient pas d'informations d'heure spécifiques, PHP essaiera de la convertir en un horodatage de l'heure actuelle. Par conséquent, le résultat n’est pas un horodatage valide et un avertissement apparaîtra. Afin de résoudre ce problème, nous pouvons ajouter des informations d'heure spécifiques après la chaîne de date pour en faire une chaîne de date et d'heure complète. 🎜🎜🎜3. Lorsque vous essayez de convertir une chaîne contenant des caractères non numériques en un entier ou un flottant 🎜🎜rrreee🎜 Dans l'exemple d'erreur, nous essayons de convertir une chaîne contenant des caractères non numériques en un entier. Étant donné que la chaîne contient des caractères non numériques, PHP ne peut pas l'analyser comme un nombre et un avertissement apparaît. Pour résoudre ce problème, nous pouvons utiliser la fonction preg_replace() pour remplacer les caractères non numériques par une chaîne vide. 🎜🎜Résumé : 🎜🎜Le message d'avertissement "Avis : Une valeur numérique non bien formée rencontrée" est l'une des erreurs courantes dans le développement PHP. En comprenant plusieurs situations courantes à l'origine de cet avertissement et en fournissant les solutions correspondantes, nous pouvons éviter cette erreur et écrire un code plus robuste. Lors de la conversion d'une chaîne en valeur numérique, nous devons nous assurer que la chaîne d'entrée est dans un format numérique légal, ou utiliser la fonction correspondante pour la convertir et la traiter afin d'éviter les avertissements. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!