Kürzlich auf PHP 7.1 aktualisiert und es wird folgender Fehler angezeigt
Warnung: Ein nicht numerischer Wert in Zeile 29
So sieht Zeile 29 aus
$sub_total += ($item['quantity'] * $product['price']);
Auf localhost funktioniert alles gut ..
Irgendwelche Ideen, wie man das angeht oder was es ist?
var_dump($item['quantity'], $product['price'])
Antworten:
Es scheint, dass in PHP 7.1 eine Warnung ausgegeben wird, wenn ein nicht numerischer Wert auftritt. Siehe diesen Link .
Hier ist der relevante Teil, der sich auf den Warnhinweis bezieht, den Sie erhalten:
Ich vermute, dass entweder $ item ['Quantität'] oder $ product ['Preis'] keinen numerischen Wert enthält. Stellen Sie daher sicher, dass dies der Fall ist, bevor Sie versuchen, sie zu multiplizieren. Verwenden Sie möglicherweise eine Bedingung, bevor Sie $ sub_total berechnen, wie folgt:
quelle
$sub_total += ((int)$item['quantity'] * (int)$product['price']);
Nicht genau das Problem, das Sie hatten, aber der gleiche Fehler bei der Suche.
Dies ist mir passiert, als ich zu viel Zeit mit JavaScript verbracht habe.
Als ich zu PHP zurückkam, verkettete ich zwei Zeichenfolgen mit "
+
" anstelle von ".
" und bekam diesen Fehler.quelle
+
, wird angenommen, dass es sich um einenint
Wert handelt ... während die angegebenen Operanden keinen numerischen Datentyp haben.+
stattdessen verwendet habe.
. Vielen Dank!Sie können das Problem ohne neue Logik lösen, indem Sie das Ding einfach in die Zahl eingeben, was die Warnung verhindert und dem Verhalten in PHP 7.0 und darunter entspricht:
(Die Antwort von Daniel Schroeder ist nicht gleichwertig, da $ sub_total nicht gesetzt wird, wenn nicht numerische Werte gefunden werden. Wenn Sie beispielsweise $ sub_total ausdrucken, erhalten Sie eine leere Zeichenfolge, die in einer Rechnung wahrscheinlich falsch ist. - by Beim Casting stellen Sie sicher, dass $ sub_total eine Ganzzahl ist.)
quelle
In meinem Fall wurde es wegen mir
+
wie in einer anderen Sprache verwendet, aber in PHP-Strings ist der Verkettungsoperator.
.quelle
Dies geschah mir speziell auf PHPMyAdmin. Um dies genauer zu beantworten , habe ich Folgendes getan:
Im Ordner:
Ich habe das geändert:
Dazu:
Hoffe, dass jemand Probleme hat ...
quelle
Ich hatte dieses Problem mit meiner Paginierung vorwärts und rückwärts Link .... einfach (int) vor die Variable $ Page + 1 setzen und es hat funktioniert ...
quelle
Ich bin auf das Problem in phpmyadmin mit PHP 7.3 gestoßen. Danke @coderama, ich habe die Bibliothek / DisplayResults.class.php Zeile 855 von geändert
in
Fest.
quelle
Hallo, in meinem Fall mit (WordPress) und PHP7.4 erhalte ich eine Warnung bezüglich eines Problems mit numerischen Werten. Also habe ich den alten Code wie folgt geändert:
Von:
$val = $oldval + $val;
Zu:
$val = ((int)$oldval + (int)$val);
Jetzt ist die Warnung verschwunden :)
quelle
Überprüfen Sie, ob Sie mit einer Variablen nicht inkrementieren, dass ihr Wert eine leere Zeichenfolge wie '' ist.
Beispiel:
quelle
Versuche dies.
und innerhalb Ihrer Schleife können Sie dies jetzt verwenden
Es sollte Ihr Problem lösen.
quelle
Ich habe mir diese Seite gerade angesehen, als ich dieses Problem hatte. Für mich wurden Gleitkommazahlen aus einem Array berechnet, aber selbst nachdem die Variablen als Gleitkommazahlen festgelegt wurden, wurde der Fehler immer noch angegeben. Hier ist die einfache Korrektur und der Beispielcode, unter denen das Problem verursacht wurde.
Beispiel PHP
quelle
Das ist der Code, den ich hatte, der eine Schleife erstellt und neue HTML-Div-Elemente erstellt hat. Der Code hat gut funktioniert und die Elemente wurden gebildet, aber ich habe die gleiche Warnung im error_log erhalten.
Nachdem ich die nützlichen anderen Antworten gelesen hatte, stellte ich fest, dass ich eine Zeichenfolge und eine Zahl in der fehlerhaften Zeile zusammenfasste. Also habe ich den Code in dieser Zeile in geändert
Jetzt funktioniert der Code wie früher, diesmal jedoch ohne Warnungen. Hoffe, dieses Beispiel wäre für jemanden nützlich.
quelle
Lösen Sie diesen Fehler in WordPress
Einfache Lösung hier!
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])));
quelle
es funktioniert 100% :)
quelle
Das passiert normalerweise, wenn Sie Strings mit + Zeichen verbinden. In PHP können Sie eine Verkettung mit dem Punktzeichen (.) Durchführen. Manchmal setze ich versehentlich ein + Zeichen zwischen zwei Zeichenfolgen in PHP und es zeigt mir diesen Fehler, da Sie nur + Zeichen in Zahlen verwenden können.
quelle
Stellen Sie sicher, dass Ihre Spaltenstruktur INT ist.
quelle
Wenn in Ihrem Code ein nicht numerischer Wert gefunden wird, versuchen Sie es unter einem. Der folgende Code wird in float konvertiert.
quelle
Wenn Sie in PHP + für die Verkettung verwenden, wird dieser Fehler angezeigt. In PHP + ist ein arithmetischer Operator. https://www.php.net/manual/en/language.operators.arithmetic.php
falsche Verwendung des Operators +:
verwenden . zur Verkettung
quelle