Recientemente actualizado a PHP 7.1 y comienza a recibir el siguiente error
Advertencia: un valor no numérico encontrado en la línea 29
Así es como se ve la línea 29
$sub_total += ($item['quantity'] * $product['price']);
En localhost todo funciona bien.
¿Alguna idea de cómo abordar esto o qué es?
var_dump($item['quantity'], $product['price'])
Respuestas:
Parece que en PHP 7.1, se emitirá una advertencia si se encuentra un valor no numérico. Vea este enlace .
Aquí está la parte relevante que pertenece al aviso de advertencia que está recibiendo:
Supongo que $ artículo ['cantidad'] o $ producto ['precio'] no contienen un valor numérico, así que asegúrese de que lo tengan antes de intentar multiplicarlos. Tal vez use algún tipo de condicional antes de calcular el $ sub_total, así:
fuente
$sub_total += ((int)$item['quantity'] * (int)$product['price']);
No es exactamente el problema que tuvo, pero el mismo error para las personas que buscan.
Esto me sucedió cuando pasé demasiado tiempo en JavaScript.
Volviendo a PHP, concatené dos cadenas con "
+
" en lugar de ".
" y obtuve ese error.fuente
+
, se asume que es unint
valor ... mientras que los operandos dados no son de ningún tipo de datos numérico.+
lugar de.
. ¡Gracias!Puede resolver el problema sin ninguna lógica nueva simplemente introduciendo la cosa en el número, lo que evita la advertencia y es equivalente al comportamiento en PHP 7.0 y siguientes:
(La respuesta de Daniel Schroeder no es equivalente porque $ sub_total permanecería sin establecer si se encuentran valores no numéricos. Por ejemplo, si imprime $ sub_total, obtendrá una cadena vacía, que probablemente sea incorrecta en una factura. - por emitiendo, asegúrese de que $ sub_total sea un número entero).
fuente
En mi caso fue por mi uso
+
como en otro lenguaje pero en PHP el operador de concatenación de cadenas es.
.fuente
Esto me estaba sucediendo específicamente en PHPMyAdmin. Entonces, para responder más específicamente a esto , hice lo siguiente:
En archivo:
Cambié esto:
A esto:
Espero que alguien salve algún problema ...
fuente
Tuve este problema con mi enlace de paginación hacia adelante y hacia atrás ... simplemente establezca (int) delante de la variable $ Page + 1 y funcionó ...
fuente
Encontré el problema en phpmyadmin con PHP 7.3. Gracias @coderama, cambié las bibliotecas / DisplayResults.class.php línea 855 de
dentro
Fijo.
fuente
Hola, En mi caso, al usar (WordPress) y PHP7.4, recibo una advertencia sobre el problema del valor numérico. Así que cambié el código anterior de la siguiente manera:
De:
$val = $oldval + $val;
A:
$val = ((int)$oldval + (int)$val);
Ahora la advertencia desapareció :)
fuente
Compruebe si no está incrementando con alguna variable que su valor sea una cadena vacía como ''.
Ejemplo:
fuente
Prueba esto.
y dentro de tu bucle ahora puedes usar esto
debería resolver tu problema.
fuente
Acabo de mirar esta página porque tenía este problema. Para mí, tenía números de punto flotante calculados a partir de una matriz, pero incluso después de designar las variables como puntos flotantes, todavía se dio el error, aquí está la solución simple y el código de ejemplo debajo que estaba causando el problema.
PHP de ejemplo
fuente
ese es el código que tenía que enlazaba y creaba nuevos elementos div html. El código funcionó bien y se formaron los elementos, pero recibí la misma advertencia en el error_log.
Después de leer las otras respuestas útiles, pensé que estaba sumando una cadena y un número en la línea errónea. Así que cambié el código en esa línea a
Ahora el código funciona como antes, pero esta vez sin advertencias. Espero que este ejemplo sea útil para alguien.
fuente
Resuelve este error en WordPress
¡Solución simple aquí!
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])));
fuente
está funcionando al 100% :)
fuente
Eso suele suceder cuando con-cat cadenas con el signo +. En PHP puede hacer una concatenación usando el signo de punto (.) Entonces, a veces coloco accidentalmente el signo + entre dos cadenas en PHP, y me muestra este error, ya que solo puede usar el signo + en números.
fuente
Asegúrese de que la estructura de su columna sea INT.
fuente
Si se encuentra un valor no numérico en su código, intente debajo de uno. El siguiente código se convierte en flotante.
fuente
en PHP si usa + para la concatenación, terminará con este error. En php + es un operador aritmético . https://www.php.net/manual/en/language.operators.arithmetic.php
uso incorrecto de + operador:
utilizar . para concatenación
fuente