Récemment mis à jour vers PHP 7.1 et commencez à recevoir l'erreur suivante
Avertissement: une valeur non numérique rencontrée en ligne 29
Voici à quoi ressemble la ligne 29
$sub_total += ($item['quantity'] * $product['price']);
Sur localhost, tout fonctionne bien.
Des idées comment aborder ceci ou ce que c'est?
var_dump($item['quantity'], $product['price'])
Réponses:
Il semble que dans PHP 7.1, un avertissement sera émis si une valeur non numérique est rencontrée. Voir ce lien .
Voici la partie pertinente qui se rapporte à l'avis d'avertissement que vous recevez:
Je suppose que $ item ['quantity'] ou $ product ['price'] ne contient pas de valeur numérique, alors assurez-vous qu'ils le font avant d'essayer de les multiplier. Peut-être utiliser une sorte de conditionnel avant de calculer le $ sub_total, comme ceci:
la source
$sub_total += ((int)$item['quantity'] * (int)$product['price']);
Pas exactement le problème que vous avez rencontré, mais la même erreur pour les personnes qui recherchent.
Cela m'est arrivé lorsque j'ai passé trop de temps sur JavaScript.
Pour en revenir à PHP, j'ai concaténé deux chaînes avec "
+
" au lieu de ".
" et j'ai obtenu cette erreur.la source
+
, on suppose qu'il s'agit d'uneint
valeur ... alors que les opérandes donnés ne sont pas de type de données numérique.+
place.
. Merci!Vous pouvez résoudre le problème sans aucune nouvelle logique en convertissant simplement l'objet dans le nombre, ce qui empêche l'avertissement et équivaut au comportement de PHP 7.0 et inférieur:
(La réponse de Daniel Schroeder n'est pas équivalente car $ sub_total resterait non défini si des valeurs non numériques sont rencontrées. Par exemple, si vous imprimez $ sub_total, vous obtiendrez une chaîne vide, ce qui est probablement faux dans une facture. - par vous assurez que $ sub_total est un entier.)
la source
Dans mon cas, c'était à cause de moi utilisé
+
comme dans un autre langage, mais en PHP, l'opérateur de concaténation de chaînes est.
.la source
Cela m'arrivait spécifiquement sur PHPMyAdmin. Donc, pour répondre plus précisément à cela , j'ai fait ce qui suit:
Dans le fichier:
J'ai changé ceci:
Pour ça:
J'espère que cela sauvera quelqu'un d'un problème ...
la source
J'ai eu ce problème avec mon lien de pagination avant et arrière .... il suffit de définir (int) devant la variable $ Page + 1 et cela a fonctionné ...
la source
J'ai rencontré le problème dans phpmyadmin avec PHP 7.3. Merci @coderama, j'ai changé la ligne 855 des bibliothèques / DisplayResults.class.php de
dans
Fixé.
la source
Bonjour, Dans mon cas en utilisant (WordPress) et PHP7.4, je reçois un avertissement concernant un problème de valeur numérique. J'ai donc changé l'ancien code comme suit:
De:
$val = $oldval + $val;
À:
$val = ((int)$oldval + (int)$val);
Maintenant, l'avertissement a disparu :)
la source
Vérifiez si vous n'incrémentez pas avec une variable que sa valeur est une chaîne vide comme «».
Exemple:
la source
Essaye ça.
et dans votre boucle, vous pouvez maintenant utiliser ceci
Cela devrait résoudre votre problème.
la source
Je viens de regarder cette page car j'avais ce problème. Pour moi, j'avais des nombres à virgule flottante calculés à partir d'un tableau, mais même après avoir désigné les variables comme des points flottants, l'erreur était toujours donnée, voici le correctif simple et l'exemple de code en dessous qui causaient le problème.
Exemple PHP
la source
c'est le code que j'avais qui a bouclé et créé de nouveaux éléments div html. Le code a bien fonctionné et les éléments ont été formés, mais j'ai reçu le même avertissement dans le journal d'erreur.
Après avoir lu les autres réponses utiles, j'ai pensé que je résumais une chaîne et un nombre dans la ligne erronée. J'ai donc changé le code de cette ligne en
Maintenant, le code fonctionne comme précédemment mais sans avertissement cette fois. J'espère que cet exemple serait utile à quelqu'un.
la source
Résolvez cette erreur sur WordPress
Solution simple ici!
wp-includes\SimplePie\Parse\Date.php
$second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
$second = round((int)$match[6] + (int)$match[7] / pow(10, strlen($match[7])));
la source
ça marche à 100% :)
la source
Cela se produit généralement lorsque vous con-cat des chaînes avec le signe +. En PHP, vous pouvez faire une concaténation en utilisant le signe point (.) Donc, parfois, je mets accidentellement le signe + entre deux chaînes en PHP, et cela me montre cette erreur, car vous ne pouvez utiliser que des chiffres + signe.
la source
Assurez-vous que la structure de votre colonne est INT.
la source
Si une valeur non numérique est rencontrée dans votre code, essayez en dessous de un. Le code ci-dessous est converti en float.
la source
en PHP si vous utilisez + pour la concaténation, vous vous retrouverez avec cette erreur. En php + est un opérateur arithmétique . https://www.php.net/manual/en/language.operators.arithmetic.php
mauvaise utilisation de l'opérateur +:
utiliser . pour la concaténation
la source